Kotlin如何在多层应用程序中引用外部距离应用功能



例如:

 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) }

最新更新