如何在Erlang中增加元组的长度?例如,假设Tup={1,2,3}
,现在我想添加另一个元素。有没有办法做到这一点?
答案 0 :(得分:8)
元组并不是一个灵活的数据结构。如果您经常调整大小,那么您应该考虑使用其他erlang data structures,例如lists,maps或sets - 取决于您的期望。这是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)。这是内置函数但是元组,列表并不是灵活的。所以除非没有别的办法,否则不要使用这个函数