在选项[X]上使用if代替匹配

Jes*_*ose 0 scala scala-option

我想用if语句替换下面的匹配,最好比这更简洁.我个人觉得是否更容易在头脑中解析.

val obj = referencedCollection match{
            case None => $set(nextColumn -> MongoDBObject("name" -> name))
            case Some( collection) =>....}
Run Code Online (Sandbox Code Playgroud)

是否有等效的if语句或其他产生等效结果的方法?

zig*_*tar 7

您可以通过组合替换模式匹配mapgetOrElse:

ox match {
  case None => a
  case Some(x) => f(x)
}
Run Code Online (Sandbox Code Playgroud)

可以替换为

ox.map(f).getOrElse(a)
Run Code Online (Sandbox Code Playgroud)