例如:
v1?.apply {
v2?.apply {
call(this, target, outerThis);
}
}
我的问题是如何提及" Outerthis"?感谢您的任何帮助。
您可以使用标签,然后可以使用合格的this
表达式:
v1?.apply outer@ {
v2?.apply {
call(this, target, this@outer)
}
}
通常不建议使用嵌套的apply
调用,这是为了避免您的情况。您当然可以使用标签作为解决方法,但是您也可以使用also
作为替代方案:
v1?.also { outer ->
v2?.apply {
call(this, target, outer)
}
}
这阻止了经常皱眉的标签的使用。标签没有错。
注意:also
是Kotlin 1.1中Stdlib的新成员。如果您使用的是旧版本,则可能无法看到它。将Kotlin更新为1.1,或在模块中的任何地方添加此代码:
inline fun <T> T.also(block: (T) -> Unit) { block(this) }