过载分辨率对lambda参数数量的歧义

时间:2017-03-10 22:26:07

标签: kotlin overload-resolution

以下行产生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")
  }
}

第一个 get 会产生Overload resolution ambiguity编译错误,但我不明白为什么?很清楚我指的是哪个功能,不是<?p?

解决方法是明确并添加->

get {->
  println("OK")
}

这可以解决问题,但当然看起来并不像以前的版本那么好。

对我来说似乎是一个编译器错误。

感谢。

Kotlin:1.1.0

0 个答案:

没有答案