满足所有参数选项时的scala条件

时间:2014-04-26 08:34:31

标签: scala playframework-2.0

我正在使用play2框架,所以当我检索参数时,我总是得到Option。但我只会在所有选项都匹配时才继续处理(非无)。

我不想编写嵌套的match,因为它看起来很难看。

if( isDefined("a") && isDefined("b"){
    //dosomething 
}

1 个答案:

答案 0 :(得分:6)

您可以将它们作为元组匹配

(aOpt, bOpt) match {
  case (Some(aVal), Some(bVal)) => ...
  case _ => ...
}

您可以使用for-comprehension syntax

for {
  aVal <- aOpt
  bVal <- bOpt
} ...

如果你想走那条路的话,Scalaz图书馆里也有一些monadic组合子((aOpt |@| bOpt) {aVal + bVal})。

Here are a similar question + answers