0
此代码编译:为什么不能在这种情况下使用隐式?
trait Plus[A] {
def plus(a1 : A , a2: A): A
}
def plus[A: Plus](a1: A, a2: A): A = implicitly[Plus[A]].plus(a1, a2)
//> plus: [A](a1: A, a2: A)(implicit evidence$1: day0.sumfunction.Plus[A])A
但是,如果我尝试使用:
def plus[A: Plus](a1: A, a2: A): A = implicit[Plus[A]].plus(a1, a2)
然后我收到编译错误:在该行多个标记 - 缺少参数类型 - 标识预期,但“[”发现。
为什么我不能在这种情况下使用隐式?
该代码从http://eed3si9n.com/learning-scalaz/polymorphism.html
我不认为'implicit'关键字需要一个类型参数,该'implicitly'方法做:'隐式地@inline def [T]'。 – 2014-09-20 20:51:46
是什么鼓励你去尝试这样的事情? – 2014-09-20 21:11:55
@ som-snytt我确实分享了源代码的起源,一个scalaz教程:http://eed3si9n.com/learning-scalaz/polymorphism.html – 2014-09-20 21:13:04