【问题标题】:Extraction of elements of tuples元组元素的提取
【发布时间】:2011-06-16 17:04:48
【问题描述】:

给定一个带有一个元组的列表:

[{4,1,144}]

如何提取列表中元组的第一个元素:

element(1,lists:nth(1,L))

你有更简单的解决方案吗?

【问题讨论】:

    标签: list tuples erlang


    【解决方案1】:

    试试这个:

    1> A = [{3,1,1444}].
    [{3,1,1444}]
    2> [{X, _, _}] = A.
    [{3,1,1444}]
    3> X.
    3
    4> 
    

    【讨论】:

    • 我喜欢这个非常简单的解决方案 ;-)
    • 如果元组是任意长度怎么办?我怎样才能写一个函数来做到这一点?
    • 首先:你不应该有任意长度的元组。在这些情况下,您应该使用列表。但是……如果你坚持:AListOfTuples = generate:your_list_of_tuples(), [FirstTuple|_] = AListOfTuples, [X|_] = tuple_to_list(FirstTuple), X.
    【解决方案2】:

    鉴于您得到的正是您所说的,一个包含一个元组的列表会更容易(使用element/2

    element(1, hd(L)).
    

    根据上下文,建议使用 shk 之类的模式匹配变体可能更好。

    【讨论】:

      【解决方案3】:

      如果你想在你的元组中嵌入一些语义,你也可以考虑使用记录语法

      -record(x, {y, z}).
      
      1> A = #x{y=b, z=c}.
      2> A#x.y.
      b
      

      所有记录实际上都是元组,您不必担心该元组中元素的顺序,也不必担心添加/删除元素。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多