Kotlin 无法将lmapda参数上的reciver对象应用于高阶函数
在下面的代码中,我正在学习如何使用lampda函数和对象接收器以及不使用它们。使用函数max1,当impl1作为body block参数传递时,代码按预期工作。 但是,使用max2和impl2作为代码参数,我无法使用receiver对象样式/符号……是否有可能将lmpda函数上的receiver对象作为参数应用于高阶函数 eclipse生成的错误是:Kotlin 无法将lmapda参数上的reciver对象应用于高阶函数,kotlin,Kotlin,在下面的代码中,我正在学习如何使用lampda函数和对象接收器以及不使用它们。使用函数max1,当impl1作为body block参数传递时,代码按预期工作。 但是,使用max2和impl2作为代码参数,我无法使用receiver对象样式/符号……是否有可能将lmpda函数上的receiver对象作为参数应用于高阶函数 eclipse生成的错误是: #unresolved reference error 请让我知道是否有可能在高阶函数的主体中使用接收器对象 代码: //lampda
#unresolved reference error
请让我知道是否有可能在高阶函数的主体中使用接收器对象
代码:
//lampda
val impl1 : (String,String) -> Boolean = {
s1, s2 -> s1.length > s2.length
}
//lampda with a reciver object and scoping object
val impl2 : String.(String) -> Boolean = {
s -> this.length > s.length
}
print(max1("1234", "12", impl1))
print(max2("1234", "12", impl2))
}
fun max1 (s1: String, s2: String, c: (String, String) -> Boolean) : String {
return "inside methods.....${ c(s1, s2) }"
}
fun max2 (s1: String, s2: String, c: String.(String) -> Boolean) : String {
return "inside methods ${ s1.impl2.s2 } "// #unresolved reference error
return "inside methods ${ s1.c.s2 } "// #unresolved reference error
}
您必须使用接收方调用您的函数:
fun max2(s1: String, s2: String, c: String.(String) -> Boolean): String {
return "inside methods ${s1.impl2(s2)} "//works
return "inside methods ${s1.c(s2)} "//also works
}