我开始使用 kotlin 在 Android 中进行开发,但我遇到了 lambdas 的问题。我有一个在我的 View 中设置监听器的函数,它看起来像这样:
fun setListener(listener: () -> Unit) {
}
问题是作为 lambda 传递的代码不会在 setListener 函数中执行,它将在我的代码的另一部分中执行(特别是在选择微调器的项目时),所以我必须“保存”或将此lambda“存储”到变量/属性中,以便我能够在需要时执行它。知道怎么做吗?
编辑:我做到了:
private var listener: (() -> Unit)? = null
fun setListener(listener: () -> Unit) {
this.listener = listener
}
有没有更好的方法呢?谢谢
最佳答案
你可以这样做:
class Foo {
private var listener: () -> Unit = {}
fun setListener(listener: () -> Unit) {
this.listener = listener
}
}
但是,在 Kotlin 中不鼓励手动编写 setter。相反,您可以将您的属性(property)公开:
class Foo {
var listener: () -> Unit = {}
}
作为引用,这里是 docs about properties有很多例子。
关于android - 将 lambda 存储在 kotlin 中的变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43811599/