导入与 class 中方法同名的隐式值时隐式解析失败
Implicit resolution failure on import of implicit value with same name as method in class
今天我突然想到以下隐式值解析问题,如 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}
重命名是必要的?
我很确定这是一个错误,尽管我无法快速识别现有的错误报告。它在没有重命名的情况下工作。
今天我突然想到以下隐式值解析问题,如 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}
重命名是必要的?
我很确定这是一个错误,尽管我无法快速识别现有的错误报告。它在没有重命名的情况下工作。