Простая проверка паттернов
Представим такую ситуацию:
let expr1: Bool
let expr2: Bool
let expr3: Bool
if expr1 && !expr3 {
functionA()
} else if !expr2 && expr3 {
functionB()
} else if expr1 && !expr2 && expr3 {
functionC()
}
Получаем много кода, в котором легко запутаться.
Попробуем попользовать pattern matching, чтобы сделать всё понятнее:
let expr1: Bool
let expr2: Bool
let expr3: Bool
switch (expr1, expr2, expr3) {
case (true, _, false):
functionA()
case (_, false, true):
functionB()
case (true, false, true):
functionC()
default:
break
}
Читать стало намного приятнее.