编写公式作为函数并适用于每个值

时间:2018-09-24 15:16:35

标签: java design-patterns kotlin functional-programming

我的应用程序中有一些MembershipTypes,如下所示:

sealed class MembershipType(val label: String) {
    abstract val interestOptions: List<BigDecimal>
    abstract val price: BigDecimal

    object GOLD : MembershipType("Gold") {
        override val price: BigDecimal = BigDecimal(1)
        override val interestOptions: List<BigDecimal> = listOf(BigDecimal(100), BigDecimal(200), BigDecimal(300))
    }

    object SILVER : MembershipType("Silver") {
        override val price: BigDecimal = BigDecimal(0.8)
        override val interestOptions: List<BigDecimal> = listOf(BigDecimal(300), BigDecimal(400), BigDecimal(500))
    }
}

它们的属性是一个价格 interestOptions 的列表。

我要计算所有 值(V) / interest(I)计算组合,并返回报价列表{{1} },请使用以下公式

List<Quote>

还有其他类型的(R^max/R) × V × (1 - I/V) × 0.0015 × P where 1 <= R <= R^max is the risk score with R^max = 3500, V > 0 is the value, I is the interest, and P is price. 对象,但是 GOLD SILVER 类型具有一组预定义的值,因此我在{ {1}}类:

MembershipType

我在QuoteMaker对象中收到R(风险)和所选的成员资格类型列表。

class QuoteMaker { private val membershipToValue: MutableMap<MembershipType, List<BigDecimal>> = mutableMapOf() init { membershipToValue.put(MembershipType.GOLD, listOf(BigDecimal(2500), BigDecimal(5000))) membershipToValue.put(MembershipType.SILVER, listOf(BigDecimal(1000), BigDecimal(2000))) } fun generateQuotes(request1: Request) { val risk = request1.riskRate val membershipChosen = request1.membershipChosen //list of MemberShipType selected generateMembershipQuote(riskRate, membershipChosen) } private fun generateMembershipQuote(riskRate: Int, membershipChosen: List<MembershipType>) : List<Quote> { //return membershipChosen.stream() //.forEach { }... } } 中,我需要遍历所有选定的成员资格,然后遍历Request中该类型的值,并计算值/兴趣的所有组合并返回结果。

我想将公式创建为函数,然后针对每个值/兴趣应用,并返回该generateMembershipQuote()的结果。我该如何实施?

membershipToValue应该具有有关总价格,用于计算总和的会员资格的价值和利息的信息

MembershipType

){

Quote

}

0 个答案:

没有答案