properties - Kotlin:返回 "this"的默认 setter

标签 properties return this kotlin setter

这个问题在这里已经有了答案:





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/

相关文章:

javascript - 为什么 *this* 不是 *this*?

javascript - 尝试找出如何使用 "this"寻址各个菜单项

ios - 注释标记@code 不适用于属性

class - 德尔福 2009 : Component Object property default value

java - 逐行在属性文件中添加注释

python - 如何创建一个包含 python 对象的所有字段和属性的字典?

PostgreSQL:我需要在 CTE 中返回任何内容吗?

C++ iostream 运算符覆盖函数返回类型

java - Java中引用 "this"子类而不是 "this"父类(super class)?

c++ - 在 C++ 中,函数在 `if` 分支与 `if` 外部返回