Erlang/Elixir原子名称的最大长度?

wh6knrhe  于 2023-01-18  发布在  Erlang
关注(0)|答案(1)|浏览(182)

erlang/elixir原子名称的最大长度是多少?我知道原子的最大数量是有限制的,但这也是我搜索原子的最大长度时弹出的所有内容。https://www.erlang.org/doc/efficiency_guide/advanced.html
我正在考虑动态地构建原子,将它们连接起来形成树状结构,这样我就可以得到进程的层次化名称。唯一原子的总数仍然受代码大小的限制,所以我仍然远远低于原子数限制。

z9smfwbn

z9smfwbn1#

Erlang文档规定atom中的字符限制为255(11.2系统限制)
下面是一个简单的检查方法

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

相关问题