gpt4 book ai didi

Kotlin:内部范围 - 这

转载 作者:行者123 更新时间:2023-12-02 09:23:51 25 4
gpt4 key购买 nike

我刚刚使用了 Kotlins 自动重构,它基本上给我留下了这个:

coverView.viewTreeObserver.addOnPreDrawListener {
coverView.viewTreeObserver.removeOnPreDrawListener(this)
true
}

这不起作用。 IntelliJ 向我展示了 this引用外部类但不引用OnPreDrawListener。这是为什么? kotlin 文档说 this 总是指最内部的范围。

最佳答案

要修复代码,您可以在此处使用对象表达式而不是lambda:

coverView.viewTreeObserver.addOnPreDrawListener(object : ViewTreeObserver.OnPreDrawListener {
override fun onPreDraw(): Boolean {
coverView.viewTreeObserver.removeOnPreDrawListener(this)
return true
}
})
函数表达式中的

this 表达式(以及传递给 addOnPreDrawListener 方法 is 函数表达式的 lambda)允许您访问 lambda 的闭包,即在其最外层作用域中声明的变量,而不是 lambda 本身。

关于Kotlin:内部范围 - 这,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33927708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com