Mey*_*ann 3 setter return properties this kotlin
我知道这不是"严格按照设计模式"等等等等,但......
在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
}
Run Code Online (Sandbox Code Playgroud)
当setter返回时非常方便this,因为可以在不必声明Builder的情况下制作Builder模式.它只是做得更短:
BlahBlah().setFoo(x).setFoo2(y)...
Run Code Online (Sandbox Code Playgroud)
比
BlahBlah.Builder().setFoo(x)....
Run Code Online (Sandbox Code Playgroud)
要么
var b = BlahBlah()
b.setFoo(x)
b.setFoo2(y)
...
Run Code Online (Sandbox Code Playgroud)
管他呢
此外,如果一个二传手Unit还是回来,为什么不this呢?
Kotlin有关于如何创建类型安全构建器的很好的文档.Kotlin中的二传手被称为
receiver.property = value
Run Code Online (Sandbox Code Playgroud)
this从setter方法返回仅在代码从Java中使用时才有用.说过Kotlin二传手必须回归Unit.即使没有专门的构建器,在Kotlin上设置几个属性的典型任务也更为简洁:
class BlahBlah {
var name = "John"
var age = 12
}
BlahBlah().apply {
name = "Sarah"
age = 10
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1154 次 |
| 最近记录: |