Bir yöntem bu gibi bir kod vardır anlıyoruz: Çal gezinirken bu yöntemi anlamınaScala'da, parametre parametrelerindeki çoklu, art arda yağ okları nedir?
def m(p1:Int => Int) ...
bir Int
döndüren bir fonksiyon p1 alır Ama!
trait Secured {
def username(request: RequestHeader) = request.session.get(Security.username)
def onUnauthorized(request: RequestHeader) = Results.Redirect(routes.Auth.login)
def withAuth(f: => String => Request[AnyContent] => Result) = {
Security.Authenticated(username, onUnauthorized) { user =>
Action(request => f(user)(request))
}
}
/**
* This method shows how you could wrap the withAuth method to also fetch your user
* You will need to implement UserDAO.findOneByUsername
*/
def withUser(f: User => Request[AnyContent] => Result) = withAuth { username => implicit request =>
UserDAO.findOneByUsername(username).map { user =>
f(user)(request)
}.getOrElse(onUnauthorized(request))
}
}
f: User => Request[AnyContent] => Result
ne anlama gelir: çerçeve kodu i çözülemez yöntemlerle bir özelliği bulundu? İlk bakışta, İstek tipi r
işlevini döndüren bir yönteme benziyor; r
, daha sonra Result
değerini döndürür.
Doğru varsayım bu mu?
Ok, güzel. Fakat bunun neden belirtilmesi gerekiyor? Derleyici neden 'Request' döndürdüğü türden çıkamaz? Düzenleyin: nevermind, sanırım İsteği alt türleri farklı Sonuç Türleri döndürür, bu yüzden yardımcı olur. –
@ CameronA.Ellis Yorumunuzu anladığımdan emin değilim. 'Request' nesnesi hiçbir şey döndürmez. 'Request [AnyContent] => Result' türüne sahip 'f' tarafından döndürülen işlev, bir' Sonuç 'döndürür. Geri dönüş tipi, bir fonksiyonun türünün dışında bırakılamaz çünkü o zaman bir 'Request 'nesnesini döndürür - bir' Request' nesnesini alan bir işlev değildir, bu oldukça farklıdır. – sepp2k
bunu açıkladığınız için teşekkürler. Şimdi tam anlam ifade ediyor. –