【问题标题】:Erlang parse multiple parametersErlang解析多个参数
【发布时间】:2014-12-30 04:49:07
【问题描述】:

我有一个简单的记录

#client{level}

级别可以是:用户/超级用户/经理/管理员

我想只在级别为经理和管理员时接受该功能。 如何将其缩小为一个:

parse(Client = #client{level=manager}) ->
    ok;
parse(Client = #client{level=admin}) ->
    ok.

或者我应该使用 Guards 吗?

【问题讨论】:

    标签: erlang


    【解决方案1】:

    是的,你绝对应该使用警卫:

    parse(Client = #client{level = Level}) when Level == manager; Level == admin ->
        ok;
    

    模式匹配的表现力仅限于绑定和比较定义值的相等性。不能像type specification这样写:

    -spec foo('admin' | 'manager') -> 'ok'.
    

    【讨论】:

      猜你喜欢
      • 2016-07-29
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      • 2019-04-10
      • 2021-02-18
      • 2021-10-25
      相关资源
      最近更新 更多