这个问题在这里已经有了答案:
Fluent methods for data class in kotlin
(3 个回答)
4年前关闭。
我知道这不是“严格按照设计模式”等等等等,但是......
在 Kotlin 中,有没有办法创建一个返回“this
”的“default-ish”setter,比如
var foo:Bar = Something()
set(f:Bar) {
foo = f
return this // Alas, that would not compile because Setter returns Unit
}
setter 返回时非常方便
this
, 因为然后可以创建一个 Builder 模式而不必声明一个 Builder.这样做的时间更短:BlahBlah().setFoo(x).setFoo2(y)...
比
BlahBlah.Builder().setFoo(x)....
或者
var b = BlahBlah()
b.setFoo(x)
b.setFoo2(y)
...
管他呢
此外,如果 setter 返回
Unit
无论如何,为什么不this
也一样?
最佳答案
Kotlin 有不错的 documentation on how to create type safe builders . Kotlin 中的 setter 被调用为
receiver.property = value
返回
this
从 setter 方法只在代码是从 Java 中使用的情况下才有帮助。话虽如此,Kotlin setter 必须返回 Unit
.即使没有专门的构建器,在 Kotlin 中为对象设置多个属性的典型任务也更加简洁:class BlahBlah {
var name = "John"
var age = 12
}
BlahBlah().apply {
name = "Sarah"
age = 10
}
关于properties - Kotlin:返回 "this"的默认 setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44238741/