【发布时间】:2019-09-25 18:25:39
【问题描述】:
我正在 Kotlin 中尝试使用 Lenses,我想知道是否有一种优雅的方法可以同时更改一个对象的多个属性。假设我的域看起来像这样:
@optics
data class Parameters(
val duration: Int,
val length: Int) {
companion object
}
@optics
data class Calculation(
val product: String
val parameters: Parameters) {
companion object
}
感谢@optics注解,编辑单个字段很容易:
val calculation = Calculation(product = "prod", Parameters(duration = 10, length = 15))
Calculation.product.modify(calculation) { selectedProduct }
Calculation.parameters.duration(calculation) { newDuration() }
Calculation.parameters.length(calculation) { 10 }
这些镜头单独工作时效果很好,但是当我想同时应用这三个变换时,应该使用哪种正确的模式?我可以使用 var 并每次都覆盖 calculation,但这对我来说并不符合习惯。
【问题讨论】:
标签: kotlin functional-programming arrow-kt