codecamp

Erlang 记录

Erlang记录

记录的定义如下:

-record(name_of_record,{field_name1, field_name2, field_name3, ......}).

例如,

-record(message_to,{to_name, message}).

这等价于:

{message_to, To_Name, Message}

用一个例子来说明怎样创建一个记录:

#message_to{message="hello", to_name=fred)

上面的代码创建了如下的记录:

{message_to, fred, "hello"}

注意,使用这种方式创建记录时,你不需要考虑给每个部分赋值时的顺序问题。这样做的另外一个优势在于你可以把接口一并定义在头文件中,这样修改接口会变得非常容易。例如,如果你想在记录中添加一个新的域,你只需要在使用该新域的地方进行修改就可以了,而不需要在每个使用记录的地方都进行修改。如果你在创建记录时漏掉了其中的某些域,则这些域会得到一个默认的原子值 undefined。

使用记录进行模式匹配与创建记录是一样。例如,在 receive 的 case 中:

#message_to{to_name=ToName, message=Message} ->

这与下面的代码是一样的:

{message_to, ToName, Message}
Erlang 头文件
Erlang 宏
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }