Tag: 超负荷解决

重载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 {-> […]

Kotlin:内联lambda和重载解析模糊

我有一个简单的工厂模式,其中的实现是通过重载决议确定的。 问题是,Kotlin编译器抱怨“重载解析歧义..”为内联lambda。 class Foo(){ companion object Factory { fun create(x: Int, f: (Int) -> Double) = 2.0 fun create(x: Int, f: (Int) -> Int) = 1 } } fun main(args:Array<String>){ val a = Foo.create(1,::fromDouble) //OK val b = Foo.create(1,::fromInt) //OK val ambiguous = Foo.create(1){i -> 1.0} //Overload resolution ambiguity? } fun fromDouble(int:Int) = 1.0 fun […]