[erlang] record
2009-03-21 12:07:12| 分类:
lang_erlang
| 标签:
|举报
|字号大中小 订阅
对于 tuple 我们只能这样访问:
P = {"kasi", 18}, %% {name, age}
Name = element(1, P),
Age = element(2, P),
用起来实在不太方便。
record 类似 C 中的 struct,可以让你通过 field name 访问具体的内容。
-record(person, {name="joe", age=18}). %% definition
R = #person{name="kasi", age=99},
Name = R#person.name,
Age = R#person.age.
R1 = R#person{name="dog"}. %% R1 = #person{name="dog", age=99}
判断 record 的类型:
is_record(P, person) % false
is_record(R, person) % true
小例子,根据名字返回年龄:
-record(person, {name="jane", age=18}).
find([#person{name=Name, age=Age} | _], Name) ->
{found, Age};
find([_ | T], Name) ->
find(T, Name);
find([], Name) ->
not_found.
评论这张
转发至微博
转发至微博
评论