Является ли черта расширением (A => B) функцией расширения признаков?
Следующий признак Parser[+T] - это признак, который расширяет функцию, которая принимает Input и возвращает a Result[T].
trait Parser[+T] extends (Input => Result[T])
Правильно ли это?
Ответ 1
Right.
Input => Result[T] является ярлыком для Function1[Input, Result[T]].
Он имеет метод abstrat
def apply(v1: Input) : Result[T]
который при определении будет фактической реализацией функции.
Синтаксис
Scala позволяет использовать методы, называемые apply молча, то есть для некоторого выражения e, e(x1, ... xn) будет переведен на e.apply(x1, ... xn)
Ответ 2
Почти. Он расширяет функцию [Input, Result [T]] тип функций, которые принимают Inputs в качестве аргументов, и возвращает результат [T] (not T) в качестве результатов. Результат [T] передает информацию об успешном анализе в T или ошибку, возникающую во время сеанса.