模式匹配无或某些条件

时间:2014-12-03 10:12:02

标签: scala

是否有语法来实现以下目标:

map.get(key) match {
  case None | Some(v) if v != 0 =>
    // Do something
  case _ =>
    // Do something else
}

所以如果地图不包含值或地图包含值并满足某个条件,我想做同样的事情

2 个答案:

答案 0 :(得分:3)

您可以在以下案例部分使用条件:

value match {
  case _ if value == None || value.get != 0 => // Do something
  case _ => // Do something else
}

答案 1 :(得分:0)

您可以产生一个中间值:

if (
    map.get(key) match {
        case None              => true
        case Some(v) if v == 0 => true
        case _                 => false
    }
) {
    // Do something
}
else {
    // Do something else
}