增加Erlang中元组的长度

时间:2015-01-08 13:13:12

标签: erlang tuples

如何在Erlang中增加元组的长度?例如,假设Tup={1,2,3},现在我想添加另一个元素。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:8)

元组并不是一个灵活的数据结构。如果您经常调整大小,那么您应该考虑使用其他erlang data structures,例如listsmapssets - 取决于您的期望。这是nice introduction to key-value stores

但是如果你真的需要扩展那个元组,那么你可以使用erlang:append_element/2

{1,2,3,4} = erlang:append_element({1,2,3}, 4).

答案 1 :(得分:2)

元组不可变,所以严格来说,你不能增加长度。

通常,如果您想要一个可变数量的数据类型,元组将非常不方便。例如,遍历列表的所有元素是高度惯用的,而迭代在编译时大小未知的元组的所有元素是一种痛苦。

然而,一个常见的模式是从某个函数获得一个元组,并返回该元组的元素和加法。

country_coords(Name) ->
    {Lat, Lng} = find_address(Name),
    {_Street, _City, _Zip, Country} = geocode(Lat, Lng),
    {ok, Lat, Lng, Country}.

答案 2 :(得分:2)

erlang:append_element(tuple_whose_length_to_increase,element_to_be)。这是内置函数但是元组,列表并不是灵活的。所以除非没有别的办法,否则不要使用这个函数