For loop 从erlang中的字符串和数字创建atom

For loop 从erlang中的字符串和数字创建atom,for-loop,erlang,For Loop,Erlang,我是Erlang新手,我想从字符串和格式创建atom。我也不知道如何在erlang中创建循环。这是我想要的sudo代码: For (int i = 0; i++; i < 10) { list_to_atom(lists:flatten(io_lib:format("certfile~B", [i]))) } For(int i=0;i++;i R=列表:序号(1,10)。 [1,2,3,4,5,6,7,8,9,10] 2> [list_to_atom(list:plant(io

我是Erlang新手,我想从字符串和格式创建atom。我也不知道如何在erlang中创建循环。这是我想要的sudo代码:

For (int i = 0; i++; i < 10) {
    list_to_atom(lists:flatten(io_lib:format("certfile~B", [i])))
}
For(int i=0;i++;i<10){
列表到原子(列表:展平(io_lib:format(“certfile~B,[i]))
}

如何在Erlang中使用此功能?

您可以使用
列表:map/2
功能以及
列表:seq/2

lists:map(fun(I)->
           list_to_atom(lists:flatten(io_lib:format("certfile~B", [I])))
         end, lists:seq(1,10)).

lists:seq/2
将生成一个数字列表,而
lists:map/2
将其更改为所需的输出。

…并使用列表理解:

ɐuıɥɔɐɯ@uplink:~/Workshop/Erlang$ erl
Erlang/OTP 19 [erts-8.3] [source] [64-bit] [smp:4:4] [async-threads:10] [kernel-poll:false]

Eshell V8.3  (abort with ^G)
1> R = lists:seq(1, 10).
[1,2,3,4,5,6,7,8,9,10]
2> [list_to_atom(lists:flatten(io_lib:format("certfile~B", [X]))) || X <- R].
[certfile1,certfile2,certfile3,certfile4,certfile5,
 certfile6,certfile7,certfile8,certfile9,certfile10]
3> 
上传:~/Workshop/Erlang$erl
Erlang/OTP19[erts-8.3][source][64位][smp:4:4][async threads:10][kernel poll:false]
Eshell V8.3(使用^G中止)
1> R=列表:序号(1,10)。
[1,2,3,4,5,6,7,8,9,10]
2> [list_to_atom(list:plant(io_lib:format(“certfile~B,[X]))| | X
干杯


顺便说一句,我不确定您是否意识到了这一点,但在Erlang中,动态生成原子是不受鼓励的。您可以使用/创建的原子数量有限(相当高,但有限)而且它们不是垃圾收集的。

我不确定我是否理解这个问题。请向函数提供输入数据和预期输出。如果您对Erlang有疑问,最好以这种格式提问。这样的格式更方便,因为每个问题都必须是具体的。请注意,在Erlang中动态生成原子通常是一个坏主意问题是它们不是垃圾收集的,所以如果你创建太多,它会使虚拟机崩溃。请你发表评论。我需要的答案正是这个。