重载lambda参数的数量的分辨率模糊
以下行会产生Overload resolution ambiguity
编译器错误:
class Req {} class Rsp {} fun get(filter: (Req, Rsp) -> Unit) { filter(Req(), Rsp()) } fun get(init: Req.()-> Unit) { val req = Req() req.init() } fun main(args: Array<String>) { get { println("Overload resolution ambiguity") } get {req, rsp -> println("OK") } }
第一次得到产生Overload resolution ambiguity
编译器错误,但我不明白为什么? 很明显,我指的是哪个功能,不是?
解决方法是明确并添加一个->
:
get {-> println("OK") }
这解决了这个问题,但是当然不像以前的版本那么好。
看来一个编译器错误给我。
谢谢。
Kotlin:1.1.0