Вы можете использовать регистр выражений в Erlang. Синтаксис:
case Expression of
Pattern1 [when Guard1] -> Expr_seq1;
Pattern2 [when Guard2] -> Expr_seq2;
...
end
Цитировать Прагматичный Эрланг:
case оценивается следующим образом. Первый,
Выражение оценивается; прими это
оценивает Значение . После этого Значение
сопоставляется по очереди с Pattern1
(с дополнительной защитой Guard1 ),
Pattern2 и т. Д. До совпадения
найденный. Как только совпадение найдено,
тогда соответствующее выражение
последовательность оценивается - результат
оценка последовательности выражения
значение выражения case. Если
ни один из шаблонов не совпадает, тогда
исключение повышено.
Пример:
filter(P, [H|T]) ->
case P(H) of
true -> [H|filter(P, T)];
false -> filter(P, T)
end;
filter(P, []) ->
[].
фильтр (P, L); возвращает список всех тех элементов X в L, для которых P (X) истинно. Это может быть написано с использованием сопоставления с образцом, но конструкция case делает код чище. Обратите внимание, что выбор между сопоставлением с шаблоном и выражениями кейса зависит от вкуса, стиля и опыта.