作为常数组
一直传说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。
更详细的内容,参阅结构体(记录)。





