我使用scala中的play框架创建了代码,如下所示:
object Application extends Controller {
def hoge = Action( implicit request =>
val username = MyCookie.getName.get
Ok("hello " + username)
}
}
object MyCookie {
def getName( implicit request: RequestHeader ) = {
request.cookies.get("name").map(_.value)
}
}
Run Code Online (Sandbox Code Playgroud)
我收到了同事的代码审查.他说这个代码因隐式参数而无法读取.我无法回复他的意见.那么你能告诉我使用隐式参数的最佳方法是什么?我何时应该使用隐式参数?
我发现Option[Map[String, String]]奇怪的作品是这样的:
scala> val fileInfo: Option[Map[String, String]] = Some(Map( "type" -> "hoge" ))
fileInfo: Option[Map[String,String]] = Some(Map(type -> hoge))
scala> fileInfo.get("type")
res1: String = hoge
Run Code Online (Sandbox Code Playgroud)
我认为Option"get"方法不会引起任何争论,所以这对我来说非常奇怪.它为什么有效?它是隐式转换还是错误?我想确定它是如何工作的.
我的规格是: