【问题标题】:Adding individual elements within a tuple Erlang在元组 Erlang 中添加单个元素
【发布时间】:2020-11-16 02:47:39
【问题描述】:

我想知道如何在元组中添加单个元素。 例如如果我有两个元组:

A={1,2,3} and B={4,5,6}

我想要的结果是添加每个元组的对应元素(1+4,2+5,3+6)所以我会得到的输出是

A+B={5,7,9}

【问题讨论】:

    标签: tuples erlang


    【解决方案1】:

    假设两个元组具有相同的大小,最简单的方法是将元组转换为列表,遍历它们,然后再次创建一个元组,例如:

    list_to_tuple([Ai + Bi || {Ai, Bi} <- lists:zip(tuple_to_list(A), tuple_to_list(B))]).
    

    或者,如果你想遍历元组:

    sum_tuples(A, B) ->
        list_to_tuple(sum_tuples_iterate(A, B, 1, [])).
    
    sum_tuples_iterate(A, _B, I, Acc) when I > tuple_size(A) ->
        lists:reverse(Acc);
    sum_tuples_iterate(A, B, I, Acc) ->
        sum_tuples_iterate(A, B, I+1, [element(I, A) + element(I, B) | Acc]).
    

    【讨论】:

      【解决方案2】:

      其中一种方法是:

      > {X,Y,Z}={1,2,3}.
      {1,2,3}
      > {A,B,C}={5,6,7}.
      {5,6,7}
      > {X+A,Y+B,Z+C}.
      {6,8,10}
      

      这利用了元组应该是有限的这一事实

      【讨论】:

        【解决方案3】:

        我们可以使用模式匹配将这个逻辑封装在一个简单的函数中:

        sum_tuples({A, B, C}, {X, Y, Z}) -> {A + X, B + Y, C + Z}.
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-04-17
          • 1970-01-01
          • 1970-01-01
          • 2012-08-28
          • 1970-01-01
          • 1970-01-01
          • 2011-11-12
          • 1970-01-01
          相关资源
          最近更新 更多