【发布时间】:2020-04-13 19:34:43
【问题描述】:
我试图让 kotlin 接受一个接口类型作为函数的接收者,但我收到一个编译错误,提示类型不匹配。
这是一个例子:
interface Foo
class Bar : Foo
fun main() {
val l = initBar {
}
initFoo(l) // Doesnt work compile error: Type mismatch.
//Required:
// Foo.() → Unit
//Found:
// Bar.() → Unit
}
fun initBar(init: Bar.() -> Unit) = init
fun initFoo(init: Foo.() -> Unit) = Unit
我从这段代码中得到以下编译错误
Type mismatch.
Required:
Foo.() → Unit
Found:
Bar.() → Unit
有没有办法让 initFoo 函数接受任何实现 Foo 而不进行强制转换的接收者对象?
谢谢。
【问题讨论】:
标签: kotlin