特质是否延伸(A => B)特征延伸函数?

时间:2012-03-30 16:29:32

标签: scala

以下特征Parser[+T]是一个特征,它扩展了一个接受Input并返回Result[T]的函数。

 trait Parser[+T] extends (Input => Result[T])

这是对的吗?

2 个答案:

答案 0 :(得分:16)

右。

Input => Result[T]Function1[Input, Result[T]]的快捷方式。 它有一个抽象方法

def apply(v1: Input) : Result[T]

当定义时将是实际的功能实现。

Scala语法允许以静默方式调用名为apply的方法,即对于某些表达式ee(x1, ... xn)将被转换为e.apply(x1, ... xn)

答案 1 :(得分:6)

几乎。它扩展了Function[Input, Result[T]] - 以Input为参数并返回Result[T](不是T)的函数类型。 Result[T]将有关成功解析的信息传递到T或解析期间发生的错误。