Kotlin: how to pass a function as parameter to another?

后端 未结 10 2203
有刺的猬
有刺的猬 2020-11-28 04:54

Given function foo :

fun foo(m: String, bar: (m: String) -> Unit) {
    bar(m)
}

We can do:

foo(\"a message\", { println         


        
10条回答
  •  失恋的感觉
    2020-11-28 05:27

    Use :: to signify a function reference, and then:

    fun foo(m: String, bar: (m: String) -> Unit) {
        bar(m)
    }
    
    // my function to pass into the other
    fun buz(m: String) {
        println("another message: $m")
    }
    
    // someone passing buz into foo
    fun something() {
        foo("hi", ::buz)
    }
    

    Since Kotlin 1.1 you can now use functions that are class members ("Bound Callable References"), by prefixing the function reference operator with the instance:

    foo("hi", OtherClass()::buz)
    
    foo("hi", thatOtherThing::buz)
    
    foo("hi", this::buz)
    

提交回复
热议问题