Erlang 二郎:“;“预结束”;元组中的元素
是否可以编写一个与此函数相当的更快的函数Erlang 二郎:“;“预结束”;元组中的元素,erlang,Erlang,是否可以编写一个与此函数相当的更快的函数 prepend(X, Tuple) -> list_to_tuple([X | tuple_to_list(Tuple)]). 在我看来,这类事情是令人沮丧的。如果你想要一个列表,就用一个 : 元组中有固定数量的内容。如果可能的元组长度有限,可以执行以下操作: prepend(X, {}) -> {X}; prepend(X, {A}) -> {X, A}; prepend(X, {A, B}) -> {X, A, B};
prepend(X, Tuple) ->
list_to_tuple([X | tuple_to_list(Tuple)]).
在我看来,这类事情是令人沮丧的。如果你想要一个列表,就用一个 :
元组中有固定数量的内容。如果可能的元组长度有限,可以执行以下操作:
prepend(X, {}) -> {X};
prepend(X, {A}) -> {X, A};
prepend(X, {A, B}) -> {X, A, B};
prepend(X, {A, B, C}) -> {X, A, B, C}.
您可以根据需要继续此模式。由于预先添加元素与将其插入位置1相同,您可以使用内置功能:
这个函数是在Erlang/OTP R16A中添加的。如果您想要一个动态结构,可以使用列表。我的实际使用情况是,我有几个函数返回“原始”元组(例如,
{Name,Age}
),并且更愿意将它们转换为标记元组({person,Name,Age}
)。我根本不想要一个动态的结构。更深层次的结构适合你吗?比如{person,{Name,Age}}?所以您可以使用以下标记调用函数:{person,who(Args)}。。
> erlang:insert_element(1, {a, b}, z).
{z,a,b}