【问题标题】:koltin I understand the clickListener functionkotlin 我了解点击监听功能
【发布时间】:2021-10-13 08:31:47
【问题描述】:
我想了解更多关于这个函数的信息,它不需要匿名函数吗?
class DevByteCountryPropertyListener(val clickListener: (countryId : String ) -> Unit) {
fun onClick(devByteCountryProperty: DevByteCountryProperty) = clickListener(devByteCountryProperty.id)
}
【问题讨论】:
标签:
android-studio
kotlin
android-recyclerview
onclicklistener
【解决方案1】:
如果你指的是构造函数中的clickListener 参数,那不是一个实际的函数——它是一个函数type。您只是在描述传入的函数应该是什么样子。
当您想要调用该构造函数并传入一个函数时,您需要决定是传入一个匿名函数、lambda 还是函数引用。 DevByteCountryPropertyListener 内部没有区别 - clickListener 始终只是一个接受 String 并且不返回任何内容的函数,它不知道也不关心该函数是如何定义和创建的。
这是anonymous functions 上的文档——就像它说的那样,它基本上是一个 lambda,除了你可以定义返回类型,而且它的简洁性和可读性要差得多。它被称为 anonymous 因为你实际上并没有命名函数 - 所以你不能在其他任何地方引用它,你在创建它时立即使用它,例如将其传递给此构造函数。