Является ли черта расширением (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 или ошибку, возникающую во время сеанса.