erlang之介绍record

*Record(记录)概述
---概念
record是erlang提供的一种作用于元组的语法,提供了给元组中元素命名的机制,以方便操作元组中的元素,实现了更加有序的元组.
---语法
-record(Record_Name,   %%或许更合适的说法是Record_Type,以后通过#RecordName的方式创建记录的实例,这里的Record_Name并非表示定义中的元组/记录实例.
            {
                key1 = Default1,
                key2 = Default2,
                ...
                keyn,  //keyn = undefined
                ...
            }).

 

*记录的一般使用
以下以记录示例:
-record(dzh_info,{name=dzh,age=27}).
1)复制/更新记录,根据记录的名称复制产生记录,原来记录的内容不改变.语法:变量 = #记录类型{有内容时更新原有的定义}
X1 = #dzh_info{name=daizhong}. ->#dzh_info{name=daizhong,age=27}.  %%"{...}"里面可以对dzh_info定义的内容重新赋值,但是不会改变dzh_info.
2)通过记录实现变量的模式匹配
#dzh_info{name=Name,age=Age} = X1.                  %%Name.->daizhong,Age.->27.
3)获取记录的一个域值,语法:记录实例#记录类型.域名
X1#dzh_info.name. –>daizhong

 

*测试程序

records.hrl%%定义记录

-record(dzh_info,{name=dzh,age=27}).  
t_records.erl-module(t_records).
-export([new_dzh/0,new_dzh/1,get_dzh_name/1]).
-include("records.hrl").

-compile(export_all).

new_dzh() ->
	#dzh_info{}.

new_dzh(Name) ->
	#dzh_info{name=Name}.

get_dzh_name(R) ->
	#dzh_info{name=Name} = R,
	Name.
测试结果16> c("/home/dzh/lx/erlang/t_records", [{outdir, "/home/dzh/lx/erlang/"}]).
c("/home/dzh/lx/erlang/t_records", [{outdir, "/home/dzh/lx/erlang/"}]).
{ok,t_records}
17> m(t_records).
Module t_records compiled: Date: January 2 2012, Time: 21.28
Compiler options:  [export_all,{outdir,"/home/dzh/lx/erlang/"},export_all]
Object file: /home/dzh/lx/erlang/t_records.beam
Exports: 
         get_dzh_name/1
         module_info/0
         module_info/1
         new_dzh/0
         new_dzh/1
ok
18> X1 = t_records:new_dzh().
{dzh_info,dzh,27}
19> X2 = t_records:new_dzh(daizhong).
{dzh_info,daizhong,27}
20> Name = t_records:get_dzh_name(X2).
daizhong
21> 

 

*记录在shell中的命令
--rr(记录定义文件)        %% 加载记录定义
--rf(记录名)                 %% 删除记录定义

终端示例22> rr("records.hrl").
[dzh_info,todo]
23> X3 = #dzh_info{}.
#dzh_info{name = dzh,age = 27}
24> rf(dzh_info).
ok
25> X4 = #dzh_info{}.
* 1: record dzh_info undefined 

注,shell的详细内容见http://www.erlang.org/doc/man/shell.html

 

*总结

---在运行时是没有记录的概念的,记录的实例就是元组.所以我觉得记录属于编译时的一种机制,有助于编写更加灵活的程序.

转载于:https://www.cnblogs.com/bronte/articles/2310789.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值