以下隐含的价值解析问题今天在我身上偷偷摸摸,如本REPL片段所示:
scala> case class X(s:String,implicit val a:Int)
defined class X
scala> class C(i:X) {
def a:Int = 1
def b:Int = {
import i.a
implicitly[Int]
}
}
<console>:17: error: could not find implicit value for parameter e: Int
implicitly[Int]
^
scala> class C(i:X) {
def a:Int = 1
def b:Int = {
import i.{a=>c}
implicitly[Int]
}
}
defined class C
虽然导入的隐式值a
会影响同名方法,但隐藏解析失败的原因应该没有理由。
任何人都可以解释为什么import i.{a=>c}
重命名是必要的吗?
答案 0 :(得分:1)
我很确定这是一个错误,虽然我无法快速识别现有的错误报告。它在没有重命名的情况下工作。