Предположим, у вас есть сильно вложенный оператор if
, например
if c1 then a1
else if c2 then a2
else if c3 then a3
else if c4 then a4
else if c5 then a5
else a6
MultiWayIf
, позволяющий записать это более кратко как
if | c1 -> a1
| c2 -> a2
| c3 -> a3
| c4 -> a4
| c5 -> a5
| otherwise -> a6
Кроме того, в то время как каждое выражение if
должен предоставить значение, является ли условие истинным или ложным (if c then a
не является действительным выражением if
, потому что else
отсутствует), многогранный if
не должен быть исчерпывающим;otherwise
можно опустить.Это только синтаксическая релаксация;исключение будет по-прежнему вызываться после вычисления выражения, если ни одно из условий не выполняется.