Scala - сложное условное сопоставление с образцом - PullRequest
16 голосов
/ 24 июля 2011

У меня есть заявление, которое я хочу выразить, что в 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 Ответ

44 голосов
/ 24 июля 2011

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

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