试图理解Scala解析器的函数签名,例如def rep [T](p:=> Parser [T]):解析器[List [T]]

时间:2012-03-31 19:54:39

标签: parsing function scala arguments

在以下Parser定义中

def  rep[T](p: => Parser[T]): Parser[List[T]]

我看到参数是一个函数。 p:之后没有类型,那么它的类型是什么?

由于

巴苏

2 个答案:

答案 0 :(得分:4)

p实际上不是一个函数。类型描述中的前缀=>表示参数按名称传递。基本上,只有在方法中使用它才会进行评估,并且每次评估它在方法中使用。有关详细信息,请参阅我的回答here

答案 1 :(得分:1)

如果我在这里错了,有人纠正我,但我相信使用by-name参数,类型是返回类型,在这种情况下,Parser [T]

基本上你所看到的(返回类型)是你传递给它的东西