Jac*_*Zhu 10 lambda apply kotlin
例如:
v1?.apply {
v2?.apply {
call(this, target, outerThis);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何引用"outerThis"?谢谢你的帮助.
zsm*_*b13 22
v1?.apply outer@ {
v2?.apply {
call(this, target, this@outer)
}
}
Run Code Online (Sandbox Code Playgroud)
通常不建议使用嵌套apply调用,这是为了避免您的情况.您当然可以使用标签作为解决方法,但您也可以使用它also作为替代方案:
v1?.also { outer ->
v2?.apply {
call(this, target, outer)
}
}
Run Code Online (Sandbox Code Playgroud)
这可以防止标签的使用,这通常是不赞成的.但标签没有任何问题.
注意:also是kotlin 1.1中stdlib的新增功能.如果您使用的是旧版本,则可能无法看到它.将kotlin更新为1.1或在模块中的任何位置添加此代码:
inline fun <T> T.also(block: (T) -> Unit) { block(this) }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2186 次 |
| 最近记录: |