我很难解释主要隐式值或隐式转换所寻求的其他隐式值之间的行为差异.具体来说,这有效:
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 …Run Code Online (Sandbox Code Playgroud)