Tuple(元组)

作为常数组

一直传说erlang没有数组。其实,tuple(元组) 就是数组(当然是常数组)。与数组相关的函数如下:

size(Tuple)
%% 取数组大小

erlang:append_element(Tuple1, Term) -> Tuple2
%% 添加一个元素

element(N, Tuple) -> Term
%% 取数组的第N个元素

erlang:make_tuple(N, InitialValue) -> Tuple
%% 创建一个数组元素值均为InitialValue的数组(该数组包含N个元素)。

setelement(Index, Tuple1, Value) -> Tuple2
%% 修改下标为Index的数组元素的值。

list_to_tuple(List) -> Tuple
%% 链表转数组

tuple_to_list(Tuple) -> List
%% 数组转链表

可以看出,Tuple数组相关的功能还是比较全的。

作为结构体

假设我们定义了一个结构体(记录)

-record(foo, {member1, member2, member3}}.

那么:

#foo{member1="hello", member3=13, member2={a, b, c}}

其实就是这样一个tuple:

{foo, "hello", {a, b, c}, 13}

而已。与结构体相关的函数有:

is_record(Term, RecordTag) -> bool()
%% 判断一个Erlang的Term是否结构体。这里RecordTag是结构体名。它等价于:
%% is_tuple(Term) and size(Term) =:= (结构体大小+1) and element(1, Term) =:= RecordTag。

更详细的内容,参阅结构体(记录)

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License

Subscription expired — please renew

Pro account upgrade has expired for this site and the site is now locked. If you are the master administrator for this site, please renew your subscription or delete your outstanding sites or stored files, so that your account fits in the free plan.