【发布时间】:2014-04-04 23:12:31
【问题描述】:
给定以下代码:
case class W(s:String)
object W{
implicit lazy val w=W("w")
}
trait A{
implicit def a:W=W("a")
}
object B{
def implicitUser(implicit w:W)=println(w.toString)
}
object Auser extends A{
def testa(a:String="0")=B.implicitUser
def testb(b:String="0")=B.implicitUser
}
你如何解释repl的以下输出
scala>Auser.testa()
W(w)
scala>Auser.testb()
W(a)
看起来testa中的方法参数名称阻止了隐式命名a的解析。 (scala 2.10.3)
【问题讨论】:
-
听起来不错——
implicit def a被参数所掩盖,因此无法找到隐式解析。 -
令人惊讶,因为类型不匹配......
标签: scala implicit-conversion scala-2.10