如何一次匹配选项图值?

Joh*_*son 5 scala scala-option

是否有可能Option[Map[String,String]]一次匹配某些键(例如没有嵌套匹配)?

以下片段是现在的样子:

val myOption:Option[Map[String,String]] = ...
myOption match {
  case Some(params) =>
    params get(key) match {
      case Some(value) => Ok(value)
      case None => BadRequest
  case None => BadRequest     
}
Run Code Online (Sandbox Code Playgroud)

Tra*_*own 9

当然!就是flatMap那个sh*t!

def lookup(o: Option[Map[String, String]], k: String) =
  o.flatMap(_ get k).map(Ok(_)).getOrElse(BadRequest)
Run Code Online (Sandbox Code Playgroud)

如果你正在使用Scala 2.10,你可以折叠Option:

def lookup(o: Option[Map[String, String]], k: String) =
  o.flatMap(_ get k).fold(BadRequest)(Ok(_))
Run Code Online (Sandbox Code Playgroud)