Kotlin 如何将作为参数传递的函数定义为可空函数?
根据这个答案,我可以将函数作为参数传递 所以,实际上有两个问题Kotlin 如何将作为参数传递的函数定义为可空函数?,kotlin,Kotlin,根据这个答案,我可以将函数作为参数传递 所以,实际上有两个问题 如果有可能,将bar函数定义为可为空,以使此方法具有重载 如何传递非当前类的函数?例如foo(“test”,myOtherObj.myTestMethod()) 我就是这样做的: fun foo(m: String, bar: ((m: String) -> Unit)?) { bar?.invoke(m) } // my function to pass into the other fun buz(m: Str
bar
函数定义为可为空,以使此方法具有重载foo(“test”,myOtherObj.myTestMethod())
fun foo(m: String, bar: ((m: String) -> Unit)?) {
bar?.invoke(m)
}
// my function to pass into the other
fun buz(m: String) {
println("top level fun: $m")
}
class MyClass() {
fun buz(m: String) {
println("instance fun: $m")
}
}
fun main() {
foo("hi", ::buz)
val myInstance = MyClass()
foo("hi", myInstance::buz)
}
我认为
MyClass()::buz
和例如myOtherObj.myTestMethod()
不一样,对吧?MyClass()
是一个类似myOtherObj
的实例MyClass()::buz
是一个函数引用,myOtherObj.myTestMethod()
是一个函数调用。@AlekseyTimoshchenkomyOtherObj::myTestMethod
hmm,我得到了一个类似Required(()->Utit)的错误?找到单元
请检查语法好吗?我刚刚运行了代码,它在Kotlin 1.3.71中运行良好
fun foo(m: String, bar: ((m: String) -> Unit)?) {
bar?.invoke(m)
}
// my function to pass into the other
fun buz(m: String) {
println("top level fun: $m")
}
class MyClass() {
fun buz(m: String) {
println("instance fun: $m")
}
}
fun main() {
foo("hi", ::buz)
val myInstance = MyClass()
foo("hi", myInstance::buz)
}