Owe*_*wen 8 polymorphism scala implicit
我很难解释主要隐式值或隐式转换所寻求的其他隐式值之间的行为差异.具体来说,这有效:
trait Foo[A]
implicit def fooString: Foo[String] = null
implicit def value[A](implicit foo: Foo[A]) = 5
> implicitly[Int]
5
Run Code Online (Sandbox Code Playgroud)
但这不是:
implicit def conversion[A](x: Int)(implicit foo: Foo[A]) = new {
def aMethod = 5
}
> 1.aMethod
could not find implicit value for parameter foo: test.Foo[A]
Run Code Online (Sandbox Code Playgroud)
变化:
implicitly还是隐式转换我得到以下结果:
Conversion/value Searching for Supplied | Works?
---------------- ------------- -------- | ------
conversion poly poly | yes
conversion poly mono | **no**
conversion mono poly | yes
conversion mono mono | yes
value poly poly | yes
value poly mono | yes
value mono poly | yes
value mono mono | yes
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,唯一不起作用的情况是当通过隐式转换启动搜索时,所寻求的值是多态的,但提供的值是单态的.
是否存在理论上的原因,或者这是Scala的错误/限制?
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |