// 假设商品价格列表
val prices = listOf(100.0, 200.0, 150.0, 300.0)
// 打折促销规则
fun applyDiscount(price: Double, discount: Double): Double {
return price * (1 - discount)
}
// 满减促销规则
fun applyFullReduction(price: Double, fullAmount: Double, reductionAmount: Double): Double {
return if (price >= fullAmount) price - reductionAmount else price
}
// 根据不同业务规则筛选和转换
fun processPrices(prices: List<Double>, rule: (Double) -> Double): List<Double> {
return prices.map(rule)
}
fun main() {
// 应用打折规则,打8折
val discountedPrices = processPrices(prices) { applyDiscount(it, 0.2) }
println("打折后的价格: $discountedPrices")
// 应用满减规则,满200减50
val reducedPrices = processPrices(prices) { applyFullReduction(it, 200.0, 50.0) }
println("满减后的价格: $reducedPrices")
}
性能优化措施分析
- 使用
map
替代循环:在 processPrices
函数中,使用 map
函数对列表元素进行转换。map
函数是 Kotlin 标准库中的函数式编程方法,内部实现采用迭代方式,相比手动编写 for
循环,代码更简洁,且性能相当。
- 避免不必要的中间数据结构:在处理数据过程中,没有创建额外的中间数据结构来存储临时结果,减少了内存开销。例如直接在
map
函数中对每个元素应用规则,而不是先创建一个空列表,再逐个添加处理后的元素。
- 函数复用:将不同的业务规则(如
applyDiscount
和 applyFullReduction
)封装成独立的函数,这样在 processPrices
函数中可以复用这些规则,提高了代码的可维护性和可读性,并且避免了重复代码带来的潜在性能问题。