Sì, è possibile:
def foo(p1: String) = Action { implicit request =>
Ok(bar(p1))
}
private def bar(p1: String)(implicit req: RequestHeader) = "content"
Il codice:
Action { implicit request
chiama questo metodo per l'oggetto Azione:
def apply(block: Request[AnyContent] => Result): Action[AnyContent] = {
Allora, che hai chiamato "richiesta" corrisponde al paramater denominato "blocco". Il "implicito" qui è facoltativo: rende disponibile il valore "richiesta" come parametro implicito ad altre chiamate metodo/funzione.
L'implicito nella funzione "barra" indica che può assumere il valore di "req" da un valore implicito e non necessariamente deve essere passato in modo esplicito.
fonte
2012-06-26 00:22:07
Grazie Adam, funziona. Domanda di follow-up, l'implicito bisogno di essere passato come un parametro al curry? – Bob
In scala, è il parametro _list_, non il parametro, che è implicito. Non sono sicuro della motivazione per questo. –
scala> val implicito i = 1 i: int = 1 scala> val implicito s = "hi" s: java.lang.String = hi scala> def concat (x impliciti: Int, y: String) = x + y concat: (implicito x: Int, implicito y: String) Stringa scala> concat res0: String = 1hi –