【问题标题】:Max length of an Erlang/Elixir atom name?Erlang/Elixir 原子名称的最大长度?
【发布时间】:2023-01-13 11:25:11
【问题描述】:

erlang/elixir 原子名称的最大长度是多少?我知道原子的最大数量是有限制的,但这也是我搜索原子的最大长度时弹出的所有内容。 https://www.erlang.org/doc/efficiency_guide/advanced.html

我正在考虑通过将原子连接起来形成树状结构来动态构建原子,这样我就可以获得进程的层次名称。唯一原子的总数仍受代码大小的限制,因此我仍远低于原子数限制。

【问题讨论】:

    标签: erlang elixir


    【解决方案1】:

    Erlang 文档说 atom 中的字符限制是 255 (11.2 System Limits)

    这是一个简单的检查方法

    iex(4)>     Enum.reduce(0..1000, :"", fn atom_length, acc ->
    ...(4)>       try do
    ...(4)>         :"#{acc}x"
    ...(4)>       rescue
    ...(4)>         e ->
    ...(4)>           IO.inspect(atom_length)
    ...(4)>           reraise e, __STACKTRACE__
    ...(4)>       end
    ...(4)>     end)
    255
    ** (SystemLimitError) a system limit has been reached
        :erlang.binary_to_atom("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", :utf8)
        (stdlib 4.1) erl_eval.erl:744: :erl_eval.do_apply/7
        (stdlib 4.1) erl_eval.erl:987: :erl_eval.try_clauses/10
        (elixir 1.13.1) lib/enum.ex:4136: Enum.reduce_range/5
    

    【讨论】:

      猜你喜欢
      • 2010-09-30
      • 2014-07-23
      • 2017-10-07
      • 2015-11-24
      • 2017-05-25
      • 2017-10-01
      • 1970-01-01
      • 2011-10-09
      • 1970-01-01
      相关资源
      最近更新 更多