是否可以写一个更快的等效函数?
prepend(X, Tuple) ->
list_to_tuple([X | tuple_to_list(Tuple)]).
Run Code Online (Sandbox Code Playgroud)
如果你有可能的有效数量的元组长度,你可以这样做:
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)
您可以根据需要继续使用此模式.
由于添加元素与将其插入位置 1 相同,您可以使用内置函数erlang:insert_element/3:
> erlang:insert_element(1, {a, b}, z).
{z,a,b}
Run Code Online (Sandbox Code Playgroud)
这个功能是在 Erlang/OTP R16A 中添加的。