我有一个简单的记录
#client{level}
级别可以是:user / superUser / manager / admin
我希望只有当level是manager和admin时才接受该函数。 如何将其缩小为只有一个:
parse(Client = #client{level=manager}) ->
ok;
parse(Client = #client{level=admin}) ->
ok.
或者我应该使用卫兵?
答案 0 :(得分:1)
是的,你一定要使用警卫:
parse(Client = #client{level = Level}) when Level == manager; Level == admin ->
ok;
模式匹配的表达性仅限于绑定和比较定义值的相等性。你不能像在type specification中那样写它:
-spec foo('admin' | 'manager') -> 'ok'.