【发布时间】:2014-09-21 05:31:16
【问题描述】:
这段代码编译:
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)
然后我收到编译错误:此行有多个标记 - 缺少参数类型 - 应为标识符,但找到了 '['。
为什么我不能在这种情况下使用隐式?
【问题讨论】:
-
我不认为
implicit关键字带有类型参数,implicitly方法可以:@inline def implicitly[T]。 -
是什么促使你尝试这样的事情?
-
@som-snytt 我确实分享了代码的来源,scalaz 教程:eed3si9n.com/learning-scalaz/polymorphism.html
-
具体来说,我很好奇您是否阅读了一些以这种特殊方式令人困惑的内容。重复到只是不知道是stackoverflow.com/questions/22669233/… 或stackoverflow.com/questions/3855595/…
-
@som-snytt 感谢您提供有用的链接
标签: scala