Erlang:将元素"预先"添加到元组中

Ale*_*nov 6 erlang

是否可以写一个更快的等效函数?

prepend(X, Tuple) ->
  list_to_tuple([X | tuple_to_list(Tuple)]).
Run Code Online (Sandbox Code Playgroud)

nmi*_*els 9

在我看来,这种事情是灰心丧气的.如果您想要一个列表,请使用一个.

Erlang入门:

元组中有固定数量的东西.

  • 更深层的结构对你好吗?喜欢{person,{Name,Age}}?所以你可以用这个标签调用函数:{person,who(whogs)} .. (2认同)

Gre*_*ill 6

如果你有可能的有效数量的元组长度,你可以这样做:

prepend(X, {}) -> {X};
prepend(X, {A}) -> {X, A};
prepend(X, {A, B}) -> {X, A, B};
prepend(X, {A, B, C}) -> {X, A, B, C}.
Run Code Online (Sandbox Code Playgroud)

您可以根据需要继续使用此模式.


leg*_*cia 5

由于添加元素与将其插入位置 1 相同,您可以使用内置函数erlang:insert_element/3

> erlang:insert_element(1, {a, b}, z).
{z,a,b}
Run Code Online (Sandbox Code Playgroud)

这个功能是在 Erlang/OTP R16A 中添加的。