2012-03-27 11 views
5

qualcuno può spiegare il codice Scala utilizzata nel tratto Secured di campione play framework app zentask:Elenco Params nella funzione Scala. Qualcuno può spiegare il codice?

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

Ho appena iniziato ad imparare Scala e non riesco a capire questa sequenza f: => String => Request[AnyContent] => Result. Cosa significa? Non riesco a trovare alcun esempio nei manuali che utilizzano più => al posto dell'elenco dei parametri per la funzione.

Cosa mi manca?

+0

possibile duplicato di [Scala codice demystify] (http://stackoverflow.com/questions/8597028/scala-code-demystify) – Debilski

risposta

4

f è una funzioneche, data una String produrrà una funzioneche attende un Result[AnyContent] per fornire un Result.

Poi alla linea 2. Si passa al f il user param, che deve essere un String e si passa il request param alla funzione risultante.

Questo modo di passare i parametri è chiamato curring. A sia a breve e un po 'esempio più complesso può essere trovato lì: http://www.scala-lang.org/node/135

7

Forse è più facile se si aggiungono alcuni parantheses:

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

f è un call-by-name parameter; è una funzione che prende uno String e restituisce: una funzione che prende uno Request[AnyContent] e restituisce un Result.

+0

Grazie. Sembra essere chiaro ora. – Oleg

Problemi correlati