Этот код компилируется:Почему нельзя использовать неявное в этом сценарии?
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] '. –
Что побудило вас совершить такое? –
@ som-snytt Я действительно делился, где был создан код, учебник по скалязу: http://eed3si9n.com/learning-scalaz/polymorphism.html –