提取元组元素

Ber*_*aud 22 erlang

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

[{4,1,144}]
Run Code Online (Sandbox Code Playgroud)

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

element(1,lists:nth(1,L))
Run Code Online (Sandbox Code Playgroud)

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

0xA*_*xAX 34

试试这个:

1> A = [{3,1,1444}].
[{3,1,1444}]
2> [{X, _, _}] = A.
[{3,1,1444}]
3> X.
3
4> 
Run Code Online (Sandbox Code Playgroud)

  • 如果元组是任意长度怎么办?如何编写函数来执行此操作? (4认同)

E D*_*que 27

鉴于你得到了你所陈述的内容,一个包含一个元组的列表就更容易了

element(1, hd(L)).
Run Code Online (Sandbox Code Playgroud)

(像shk建议的模式匹配变体可能更好,取决于上下文.


key*_*one 5

如果您想将一些语义嵌入到元组中,您也可以考虑使用记录语法

-record(x, {y, z}).

1> A = #x{y=b, z=c}.
2> A#x.y.
b
Run Code Online (Sandbox Code Playgroud)

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