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?

Ответы

Ответ 1

Если вы хотите обрабатывать несколько условий в одном выражении match, вы также можете использовать защитные устройства, которые позволят вам указать дополнительные условия для случая:

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