Scala-复杂条件模式匹配
我想表达一个语句,在C中,伪代码如下所示:Scala-复杂条件模式匹配,scala,pattern-matching,Scala,Pattern Matching,我想表达一个语句,在C中,伪代码如下所示: switch(foo): case(1) if(x > y) { if (z == true) doSomething() } else { doSomethingElse() } return doSomethingElseEntirely()
switch(foo):
case(1)
if(x > y) {
if (z == true)
doSomething()
}
else {
doSomethingElse()
}
return doSomethingElseEntirely()
case(2)
essentially more of the same
scala模式匹配语法是一种很好的方法吗?如果您想在一条
match
语句中处理多个条件,还可以使用允许您为案例指定附加条件的保护:
foo match {
case 1 if x > y && z => doSomething()
case 1 if x > y => doSomethingElse()
case 1 => doSomethingElseEntirely()
case 2 => ...
}
这实际上与OP写的不符。控制流程不同;在
x>y&&z
上,OP执行doSomething()
,返回dosomethingelseentirele()
,而您的OP单独返回doSomething()
。@Rex-很好,谢谢。我不太明白,因为OP的代码缺少一些开头和结尾的花括号。无论如何,它应该很容易修复相应的机构。对我来说,这并不表明x>y测试是共同的前两个分支。if/then/else没有本质上的错误,在这种情况下,它更清晰(IMO)。@Paul我同意,但这是要求这种解决方案的OP!:)我无法在异常处理中使用防护