给予:
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]发布于 2016-11-21 22:43:40
implicit class Foo(val i: Int)意味着从Int到Foo的隐式转换。所以implicitly[Int => Foo]应该能工作。
可以这样想:如果您可以用implicitly[Foo]调用一个Foo,那么您希望得到哪个Foo呢?一个Foo(0)?一个Foo(1)?一个Foo(2)
发布于 2016-11-22 15:25:02
欲知更多详情,
implcitly关键字可以解释如下
implitlyT意味着返回上下文中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的隐式函数。
https://stackoverflow.com/questions/40730685
复制相似问题