我有onClick
函数类型声明为类字段val onClick: (() -> Unit)? = null
并想像这样使用它:
if (onClick != null) {
item.setOnClickListener { onClick.invoke() }
}
该代码有效,但是当我用
let
函数替换它时,它显示错误unresolved reference: invoke
:onClick?.let {
item.setOnClickListener { it.invoke() }
}
为什么会发生?
最佳答案
这里的it
是第二个lambda(传递给setOnClickListener
)的接收者,而不是第一个lambda(let
)的接收者。通过显式为其指定名称来将参数声明为第一个lambda,然后使用该名称,例如
onClick?.let { handler ->
item.setOnClickListener { handler.invoke() }
}
关于kotlin - 带有let的功能类型-未解析的引用:invoke,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53333985/