在列表中的项目上添加字符串:在Erlang中展平?

时间:2016-03-29 12:48:42

标签: erlang ejabberd

我有一个像['a','b','c','d']这样的列表,我需要的是为该列表中的每个项添加一个词缀,如:['a@erlang','b@erlang','c@erlang','d@erlang']

我尝试使用1lists:foreach1然后将两个字符串连接到一个,然后lists:append连接到主列表,但这对我没用。

我尝试过的例子:

LISTa = [],
lists:foreach(fun (Item) ->
    LISTa = lists:append([Item,<<"@erlang">>])
 end,['a','b','c','d'])

提前致谢。

2 个答案:

答案 0 :(得分:1)

1> L = ['a','b','c','d'].
[a,b,c,d]
2> [ list_to_atom(atom_to_list(X) ++ "@erlang") ||X <- L]. 
[a@erlang,b@erlang,c@erlang,d@erlang]

请尝试使用此代码,您可以使用list_to_atomatom_to_list

答案 1 :(得分:0)

这将解决问题(使用列表推导):

1> L = ["a","b","c","d"].
["a","b","c","d"]
2> R = [X ++ "@erlang" || X <- L].
["a@erlang","b@erlang","c@erlang","d@erlang"]
3>

请注意,我更改了字符串的原子;我不鼓励在Erlang中“动态创建原子/动态”,所以我想到了这一点。如果您仍然需要,请稍微更改一下实施,您就可以了。

注意:我假设原子和二进制文件之间的连接在某种程度上是你没有故意做的事情。