无法传递lambda表达式来代替单方法接口。为什么?

时间:2018-03-06 06:04:15

标签: kotlin

根据我的理解,如果Kotlin方法需要一个参数并且该参数是一个具有单个方法的接口,我可以传入一个lambda表达式(如许多在线教程使用setOnClickListener所示和类似的东西)。但是,编译以下代码:

interface I {
    fun ha()
}

class C() {
    fun set(i: I) { i.ha() }
}

fun main(args: Array<String>) {
    val c = C()
    c.set { println("Hi") }
}

结果为:error: type mismatch: inferred type is () -> Unit but I was expected

我错过了什么吗?

0 个答案:

没有答案