kotlin如何在多层应用函数中引用outer-scope这个
例如:
v1?.apply { v2?.apply { call(this, target, outerThis); } }
我的问题是如何参考“outerThis”? 感谢您的帮助。
您可以使用一个标签 ,然后使用一个合格的表达式:
v1?.apply outer@ { v2?.apply { call(this, target, this@outer) } }
通常不建议使用嵌套apply
调用,这是为了避免你的情况。 您当然可以使用标签作为解决方法,但您也可以将其用作替代方法:
v1?.also { outer -> v2?.apply { call(this, target, outer) } }
这可以防止使用经常皱眉的标签。 虽然标签没有错。
注意:在kotlin 1.1中,stdlib also
一个新的增加。 如果您使用的是旧版本,则可能无法看到它。 要么将kotlin更新到1.1,要么将这段代码添加到模块中的任何位置:
inline fun <T> T.also(block: (T) -> Unit) { block(this) }