假设:
implicit class Foo(val i: Int) {
def addValue(v: Int): Int = i + v
}
是否有可能适用于implicitly
?
我在这里收到错误:
<console>:14: error: could not find implicit value for parameter e: Foo
implicitly[Foo]
答案 0 :(得分:7)
implicit class Foo(val i: Int)
表示从Int
到Foo
存在隐式转化。所以implicitly[Int => Foo]
应该有用。
这样想:如果你可以召唤一个Foo
与implicitly[Foo]
,Foo
你期望得到什么?一个Foo(0)
?一个Foo(1)
?一个Foo(2)
?
答案 1 :(得分:0)
有关详细信息,
implcitly
关键字可以解释如下
implitly [T]表示在上下文中返回类型T的隐式值
这意味着,要隐式获取Foo
,您需要在范围
例如,
implicit class Foo(val i: Int) {
def addValue(v: Int): Int = i + v
}
implicit val foo:Foo = Foo(1)
val fooImplicitly = implicitly[Foo] // Foo(1)
另外,请注意Foo
本身只是一个类,
但是通过在类定义前加上隐式关键词,
编译器创建类型为Int => Foo