erlang/elixir原子名的最大长度是多少?我知道原子的最大数目是有限制的,但是当我搜索一个原子的最大长度时,它也会出现。https://www.erlang.org/doc/efficiency_guide/advanced.html
我正在考虑通过将原子连接起来形成树状结构来动态地构建原子,这样我就可以获得进程的分层名称。唯一原子的总数仍然受到代码大小的限制,所以我仍然远远低于原子数限制。
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