此代码编译:
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)
然后我收到编译错误:此行有多个标记 - 缺少参数类型 - 预期的标识符,但是' ['找到。
为什么我不能在这种情况下使用隐式?
答案 0 :(得分:3)
implicit
是一个无法像这样使用的关键字。您正在寻找位于implicitly
的<{1}}:
Predef
或者:
def plus[A: Plus](a1: A, a2: A): A = implicitly[Plus[A]].plus(a1, a2)