导入与类中的方法同名的隐式值时隐式解析失败

时间:2017-11-14 00:24:24

标签: scala implicit

以下隐含的价值解析问题今天在我身上偷偷摸摸,如本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}重命名是必要的吗?

1 个答案:

答案 0 :(得分:1)

我很确定这是一个错误,虽然我无法快速识别现有的错误报告。它在没有重命名的情况下工作。