Попытка понять сигнатуру функции для анализаторов Scala, например def rep [T] (p: => Parser [T]): Parser [List [T]] - PullRequest
1 голос
/ 31 марта 2012

В следующем определении парсера

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

Я вижу, что аргумент является функцией.После p: нет типа, так что это за тип?

Спасибо

Basu

Ответы [ 2 ]

4 голосов
/ 01 апреля 2012

p на самом деле не функция.Беспрецедентный => в описании типа означает, что аргумент передается по имени.По сути, он не оценивается, пока не будет использован в методе, и он оценивается каждый раз, когда используется в методе.Пожалуйста, смотрите мой ответ здесь для получения дополнительной информации.

1 голос
/ 01 апреля 2012

Кто-то поправит меня, если я здесь не прав, но я считаю, что с помощью параметров по имени тип является типом возвращаемого значения, в данном случае Parser [T]

В основном то, что вы видите (тип возврата), это то, что вы передаете ему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...