【问题标题】:Increasing the length of a tuple in Erlang在 Erlang 中增加元组的长度
【发布时间】:2015-01-08 13:13:11
【问题描述】:

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

【问题讨论】:

  • 在 erlang 中,包括元组在内的所有数据都是不可变的,因此您无法以任何方式更改元组。 “修改”一个元组意味着用你想要的改变创建一个新的,旧的仍然没有改变。
  • 为什么一个月后你改变主意了?原来我的回答不正确?看起来像是计划不周的声誉操纵......

标签: erlang tuples


【解决方案1】:

元组不应该是一种灵活的数据结构。如果您经常调整它的大小,那么您应该考虑使用其他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).

【讨论】:

    【解决方案2】:

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

    一般来说,如果你想要一个可变数量的数据类型,一个元组会很不方便。例如,迭代列表的所有元素是非常惯用的,而迭代在编译时大小未知的元组的所有元素是一种痛苦。

    但是,一种常见的模式是从某个函数中获取一个元组作为结果,然后返回该元组的元素加上加法。

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

    【讨论】:

      【解决方案3】:

      erlang:append_element(tuple_whose_length_to_increase, element_to_be)。这是内置函数,但元组、列表并不灵活。所以除非没有其他方法,否则请避免使用此函数

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-20
        • 1970-01-01
        • 2012-06-07
        • 1970-01-01
        • 2019-12-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多