Lambda kotlin如何在多层应用函数中引用此外部范围
例如:Lambda kotlin如何在多层应用函数中引用此外部范围,lambda,kotlin,apply,Lambda,Kotlin,Apply,例如: v1?.apply { v2?.apply { call(this, target, outerThis); } } 我的问题是如何称呼“外衣”? 谢谢您的帮助。您可以先使用,然后使用表达式: v1?.apply outer@ { v2?.apply { call(this, target, this@outer) } } 通常不建议使用嵌套的apply调用,这是为了避免出现这种情况。当然,您
v1?.apply {
v2?.apply {
call(this, target, 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的新添加。如果您使用的是旧版本,您可能无法看到它。将kotlin更新为1.1或在模块中的任意位置添加此代码:
inline fun <T> T.also(block: (T) -> Unit) { block(this) }
inline fun T.allow(block:(T)->Unit){block(this)}
这是否也适用于扩展功能?在我的例子中,我在java.util.Date
类上扩展了一个函数。在我的函数中,我想调用Calendar.getInstance().apply{
,但我不知道如何获取日期对象的引用。