Как понять этот вид объявления функции: `=> .. => .. => ..`? - PullRequest
4 голосов
/ 04 марта 2012

Я где-то вижу объявление функции scala:

def test(f: => String => Result[AnyContent] => Result) = ...

Я никогда не видел такого рода функции: => ... => ... => ..., как это понять?

Ответы [ 2 ]

10 голосов
/ 04 марта 2012

String => Result[AnyContent] => Result десугаров до Function1[String, Function1[Result[AnyContent], Result]].Это полезно читать как: => String => (Result[AnyContent] => Result]).То есть функция, которая принимает => String, возвращает функцию Result[AnyContent] => Result (также известную как карри).

=> A является параметром по имени типа A.Таким образом, => String => Result[AnyContent] => Result указывает, что test принимает аргумент типа String => Result[AnyContent] => Result по имени.Подробнее о параметрах по имени здесь .

1 голос
/ 04 марта 2012

Помните, что функция - это обычный тип данных.Функции могут возвращать функции.

f: => String => Result[AnyContent] => Result

Аналогично

String => (Result [AnyContent] => Result)

Это просто функция из String, возвращающая функцию изResult[AnyContent] до Result.

f: => - это параметр по имени, как объяснил Джош в ответе выше.

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