我只是开始学习科特林和我在努力了解高阶函数如何确定类型的,我经常看到这种错误科特林 - 高阶函数和类型不匹配
上述错误是所引起的下列
class MyClass(private val valueChangeListener: MyValueChangeListener, public val storage: MyStorage): MySuperClass {
fun saveValue(potentialValue: String) {
super.processValue(potentialValue, MyClass::save)
}
fun save(value: String){
storage.storeValue(value)
valueChangeListener.onValueChanged(value)
}
}
但是如果我使用lambda所有解决
class MyClass(private val valueChangeListener: MyValueChangeListener, public val storage: MyStorage): MySuperClass {
fun saveValue(potentialValue: String) {
super.processValue(potentialValue, super.processValue(potentialValue, { value: String ->
save(value)
})
}
fun save(value: String){
storage.storeValue(value)
valueChangeListener.onValueChanged(value)
}
}
个MySuperClass
open class MySuperClass {
private fun cleanseValue(value: String) : String {
return value.toUpperCase().replace(" ", "").replace("-", "")
}
protected fun processValue(potentialValue: String, saveFunction: (String) -> Unit){
saveFunction(cleanseValue(potentialValue))
}
}
啊,我看到非常感谢你的IDE快速的解决办法是包括'MyClass'而不是'this'引用的方法,只是'时: :save' –