Kotlin以声明作为表达
我们可以做的
val obj = Obj() with (obj) { objMethod1() objMethod2() }
但有没有办法做到这一点?
val obj = with(Obj()) { objMethod1() objMethod2() }
为了解决一个常见的情况,你创建一个对象并调用它的一些方法来初始化它的状态。
当然,你可以使用.apply { }
stdlib函数
使用
this
值作为接收方调用指定的功能块并返回this
值。
public inline fun <T> T.apply(block: T.() -> Unit): T { block(); return this }
用法示例:
val obj = Obj().apply { objMethod1() objMethod2() }
你可以在这里参考许多其他的Kotlin成语。
你的第二个例子也可以工作 – 只要确保lambda返回正确的值(最后一个表达式的结果是with
表达式的返回值):
val obj = with(Obj()) { objMethod1() objMethod2() this // return 'this' because we want to assign the new instance to obj }