Erlang学习笔记

Erlang学习笔记

ID:37710224

大小:30.03 KB

页数:7页

时间:2019-05-29

Erlang学习笔记_第1页
Erlang学习笔记_第2页
Erlang学习笔记_第3页
Erlang学习笔记_第4页
Erlang学习笔记_第5页
资源描述:

《Erlang学习笔记》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Erlang学习笔记一、Erlang语言特征重点1、catch是返回表达式的值或者错误信息的元组try…catch是可以捕捉不同的错误类型以及有流程控制2、发送消息永远不会失败,如果尝试发送消息给一个不存在的进程,只会被丢弃信息,但不会产生运行错误3、发送一个消息到不存在的“注册进程”会导致badarg错误,从而使调用进程终止。如果不想导致终止调用进程,则需使用try…catch把这个调用保护起来。4、刷新邮箱语句flush()5、进程链接是双向的,所以进程A与B相连或进程B与A相连是无关紧要的,其结果都是相同的。如果一个链接进程异常终止,退出信

2、号会发送到与这个终止进程相连的所有进程。退出的信号是具有{‘EXIT’,Pid,Reason}格式的元组,’EXIT’是基元。6、捕捉退出信号process_flag(trap_exit,true)7、链接是双向的,为了单向监控进程,可调用erlang:monitor(process,Proc),Proc可以是进程标识符也可以是注册的名称。当带有进程标识符的进程终止时,消息{‘DOWN’,Reference,process,Pid,Reason}会发送到监控进程。重复调用erlang:monitor(process,Pid)会返回不同的引用,从而

3、建立多个独立监控。保险起见,使用erlang:demonitor(Reference,[flush]),它在关闭监控的同时会删除由Reference提供的所有’DOWN’信息。8、将宏的参数作为字符串保留,可在变量前加前缀??(如??Call)来达到目的-define(VALUE(Call)),io:format(“~p=~p~n”,[??Call,Call])).Test1()->?VALUE(length([1,2,3])).详见1709、预定义的宏?MODULE?MODULE_STRING?FIKE?LINE?MACHINE详见17010、

4、利用已定义的函数作为其他函数的参数funM:F/nhof1:filter(funhof1:palin/1,[[2,2],[2,3]]).11、列表解析的保护元返回true或false12、使用ets:fun2ms返回一个匹配规约MS=ets:fun2ms(fun({Name,Country,Job})whenJob/=cook->[Country,Name]end).注意fun必须是一个文字函数,即ets:fun2ms/1调用中输入的函数,而不是绑定一个变量的那个。如果在模块中使用,需要包含一个头文件:-include_lib(“stdlib/i

5、nclude/ms_transform.hrl”).13、在ETS表中默认关键字位置是元组的第一个元素。在记录中,这个位置保留给了记录的类型,除非明确指定关键字的位置,否则无法获得想要的行为。通过表达式#RecordType.KeyField获取RecordType里KeyField的位置,可以把{keypos,#RecordType.KeyField}加入到ets:new/2函数调用的选项列表中。14、ets:lookup/2返回符合匹配条件的完整的记录列表,ets:match/2返回的是与变量匹配的值,ets:match_object/2返回

6、的是全部匹配模式的元组。详见224-22515、当遍历表的时候需要使用safe_fixtable/2锁定表,因为在遍历时具有破坏性的操作会引起运行时错误或者更糟,将导致无法预计的行为,把遍历操作封装在catch语句中是个好主意,因为我们需要保证在发生运行时错误时释放表。16、如果要发送信息给位于节点foo@STC的一个叫做frequency的进程,需要采用{frequency,foo@STC}!Message17、如果一个节点可以与其他节点通信,它被称为存货节点。用erlang:is_alive()测试本地运行时系统是否为存活状态,用net_ke

7、rnel模块函数可以改变系统的存活状态,可以使用node/0内置函数找出当前节点的名字(foo@STC.local)18、长名字节点只能与其他具有长名字的节点通讯,短名字节点只能与其他具有短名字的节点通讯。19、在基本的ErlangRPC实现中,函数调用被一个消息的发送和接收代替p25520、gen_server模块的函数start将生成新的进程,改进程使用已经提供的参数调用CallbackModule模块中的init(Arguments)回调函数。函数init必须初始化服务器的LoopData,并返回一个格式为{ok,LoopData}的元组。

8、21、-behavior(gen_server)指令,只是告诉编译器,你使用的模块是gen_server回调模块,因此他期望许多回调函数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。