web-dev-qa-db-ja.com

Scala-複雑な条件付きパターンマッチング

私が表現したいステートメントがあります。Cでは擬似コードは次のようになります。

switch(foo):
    case(1)
        if(x > y) {
            if (z == true)
                doSomething()
            }
            else {
                doSomethingElse()
            }
        return doSomethingElseEntirely()

    case(2)
        essentially more of the same

scalaパターンマッチング構文で良い方法は可能ですか?

16

1つのmatchステートメントで複数の条件を処理する場合は、guardsを使用して、ケースに追加の条件を指定することもできます。

foo match {    
  case 1 if x > y && z => doSomething()
  case 1 if x > y => doSomethingElse()
  case 1 => doSomethingElseEntirely()
  case 2 => ... 
}
44
Tomas Petricek