Список параметров в функции Scala. Может кто-нибудь объяснить код? - PullRequest
5 голосов
/ 27 марта 2012

Может ли кто-нибудь объяснить код Scala, используемый в черте? Защищено от playframework - пример приложения zentask:

def IsAuthenticated(f: => String => Request[AnyContent] => Result) = Security.Authenticated(username, onUnauthorized) { user =>
Action(request => f(user)(request))
}

Я только начал изучать Scala и не могу понять эту последовательность f: => String => Request[AnyContent] => Result. Что это значит? Я не могу найти никаких примеров в руководствах, которые используют несколько => вместо списка параметров для функции.

Что мне не хватает?

Ответы [ 2 ]

7 голосов
/ 27 марта 2012

Возможно, будет проще, если вы добавите несколько паратезов:

f: => (String => (Request[AnyContent] => Result))

f - это параметр вызова по имени ;это функция, которая принимает String и возвращает: функция, которая принимает Request[AnyContent] и возвращает Result.

4 голосов
/ 27 марта 2012

f - это функция , которая при String создаст функцию , которая ожидает Result[AnyContent] для предоставления Result.

Затем в строке 2. вы передаете f параметр user, который должен быть String, и передаете параметр request полученной функции.

Этот способ передачи параметровназывается карри .Здесь можно найти как короткий, так и более сложный пример: http://www.scala -lang.org / node / 135

...