我想知道这是 Scala 2.13-M5 中的错误还是预期行为。
以下代码段编译并输出“包对象中的对象”:
package object test {
implicit val a: TS = new TS("val in package object")
implicit object b extends TS("object in package object")
}
package test {
class TS(override val toString: String)
class Inner {
implicit val f: TS = new TS("val in inner class")
val resolve = implicitly[TS]
}
object Test extends App {
println(new Inner().resolve)
}
}
注释掉第三行后implicit object b extends TS("object in package object"
,会出现一个模棱两可的隐式编译错误,这也是我在第一种情况下所期望的:
Error:(11, 29) ambiguous implicit values:
both value a in package test of type => test.TS
and value f in class Inner of type => test.TS
match expected type test.TS
val resolve = implicitly[TS]