erlang中的record

来源:互联网 发布:win10无法识别有线网络 编辑:程序博客网 时间:2024/06/03 20:37

record记录通过下面这种语法定义:

-record(Name,{                   key1,                   key2,                  ...                   key}).
其中Name是记录的名字,key1,key2等是字段名。(注意,是小写开头的原子)

下面一个记录的例子:

-record(todo,{status=remainder,who=joe,text}).

创建一个记录的方法如下:

X=#tudo{}.

此时,X记录的字段全是默认值

X1=#tudo{text="Fix errata in book"}.

此时X1前两个字段值是默认值,text是指定值。

X2=X#todo{who=bob}

此时X2的值和X相同,除了who字段外。


取记录的字段内容:

X2#todo.who  得到X2的who字段内容。


从记录中提取字段值:

#tudo{who=W,text=Txt} = X1.

此时W=joe  Txt ="Fix errata in book"


在函数中对记录进行匹配:

-module(tut).-export([area/1,myf/0]).-record(tudo,{who,text}).area(#tudo{who=W,text=T})->{W,T}.myf()->X=#tudo{who=joe,text="abc"},area(X).



原创粉丝点击