首页 > 解决方案 > 在 Kotlin 的 lambda 中调用具有参数的函数

问题描述

我有一个 Kotlin 函数fun myFun(book:Book){...}。如何传递myFun给接受 lambda 的函数?

fun acceptor(task: (book:Book) -> Unit){ var someBook = ... ... task(someBook) }

标签: kotlinlambdahigher-order-functions

解决方案


class MyClass {

    fun myFun(book:Book) {
        ...
    }

    fun otherThatCallsAccept() {
        /* other stuff */
        acceptor(::myFun)
    }
}

编辑:你不能在acceptor没有参数的情况下调用,但你可以定义一个默认的空 lambda,

fun acceptor(task: (book:Book) -> Unit = {}) {
    /* body here */
}

推荐阅读