为什么以下代码会导致编译错误:
class MyImplicit
class FooTest extends ImplicitProvider {
def getImplicit(implicit i: MyImplicit) = i
getImplicit
}
trait ImplicitProvider {
implicit val myImplicit = new MyImplicit
}
Run Code Online (Sandbox Code Playgroud)
编译错误是:
could not find implicit value for parameter i: MyImplicit getImplicit
Run Code Online (Sandbox Code Playgroud)
如果我将特性ImplicitProvider移动到类FooTest之上,一切正常.
我用scala 2.11.7和sbt 0.13.9编译.
这是预期的行为还是一个错误?
这似乎是一个“功能”。看看这张票中的评论。
显然,当未显式指定隐式类型时,这是预期的行为。因此,您可以通过向隐式 val 添加类型注释来修复它。
class MyImplicit
class FooTest extends ImplicitProvider {
def getImplicit(implicit i: MyImplicit) = i
getImplicit
}
trait ImplicitProvider {
implicit val myImplicit: MyImplicit = new MyImplicit
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |