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}