如何将Erlang二进制组合起来?

时间:2014-11-04 03:09:21

标签: erlang

鉴于

[<<"1 coin">>, <<"2 cash">>, <<"3 coin">>]

我想:

<<"1 coin, 2 cash, 3 coin">>

我该如何做到这一点?

1 个答案:

答案 0 :(得分:3)

连接2个二进制文件的方法是<<B1/binary, B2/binary>>。它经常被使用,因为二进制文件列表通常被称为iolist,并且被Erlang中的大多数库直接操作。

由于您不仅要展平列表,还要在每个术语之间添加", ",您可以编写自己的递归函数或使用列表:foldl / 3:

1> Concat = fun(L) -> [H|T] = lists:reverse(L), lists:foldl(fun(X,Acc) -> <<X/binary,", ",Acc/binary>> end, H, T) end.
#Fun<erl_eval.6.90072148>
2> Concat([<<"1 coin">>, <<"2 cash">>, <<"3 coin">>]).                                                                               
<<"1 coin, 2 cash, 3 coin">>
3>