M>Можно код полностью, пожалуйста? А то «добавь тут, добавь там, допущены к исполнению» — это как-то сверх-абстрактно
Флажки будет проверять функция:
order_is(Tuple, Element) ->
lists:member(Element, tuple_to_list(Tuple)).
Её заголовок будет таким:
approve({order, {data, D}, {flags, F}}) when order_is(F, checked) ->
%
% До этого места дойдём только если в кортеже {order, {data, ...}, {flags, ...}}
% есть кортеж {flags, ...} и в нём есть элемент checked, то есть если он выглядит
% как {flags, ..., checked, ..., ..., ...}
%
.
А вызывать её будем так:
case approve(Order) of
{ok, ...} ->
...
_ ->
exit(badOrderstState)
end.
По аналогии с операторами в C, переключающими и проверяющими битовые флажки.
Только здесь при добавлении/отключении флажка придётся заново создавать новый кортеж Order.