我们可以做的
val obj = Obj()
with (obj) {
objMethod1()
objMethod2()
}
Run Code Online (Sandbox Code Playgroud)
但是有办法做到这一点吗?
val obj = with(Obj()) {
objMethod1()
objMethod2()
}
Run Code Online (Sandbox Code Playgroud)
要解决创建对象并在其上调用几个方法来初始化其状态的常见情况.
hot*_*key 28
当然,你可以使用.apply { }
stdlib函数
调用指定的功能块,将
this
值作为其接收器并返回this
值.
public inline fun <T> T.apply(block: T.() -> Unit): T { block(); return this }
Run Code Online (Sandbox Code Playgroud)
用法示例:
val obj = Obj().apply {
objMethod1()
objMethod2()
}
Run Code Online (Sandbox Code Playgroud)
你可以在参考文献中找到许多其他Kotlin习语.
您的第二个示例也可以 - 只需确保lambda返回正确的值(最后一个表达式的结果是表达式的返回值with
):
val obj = with(Obj()) {
objMethod1()
objMethod2()
this // return 'this' because we want to assign the new instance to obj
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9538 次 |
最近记录: |