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