Erlang学习笔记.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Erlang学习笔记

Erlang学习笔记Erlang语言特征重点1、catch是返回表达式的值或者错误信息的元组try…catch是可以捕捉不同的错误类型以及有流程控制2、发送消息永远不会失败,如果尝试发送消息给一个不存在的进程,只会被丢弃信息,但不会产生运行错误3、发送一个消息到不存在的“注册进程”会导致badarg错误,从而使调用进程终止。如果不想导致终止调用进程,则需使用try…catch把这个调用保护起来。4、刷新邮箱语句 flush()5、进程链接是双向的,所以进程A与B相连或进程B与A相连是无关紧要的,其结果都是相同的。如果一个链接进程异常终止,退出信号会发送到与这个终止进程相连的所有进程。退出的信号是具有{‘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)会返回不同的引用,从而建立多个独立监控。保险起见,使用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、利用已定义的函数作为其他函数的参数 fun M:F/n hof1:filter(fun hof1:palin/1,[[2,2],[2,3]]).11、列表解析的保护元返回true或false12、使用ets:fun2ms返回一个匹配规约 MS = ets:fun2ms(fun({Name,Country,Job}) when Job/= cook - [Country,Name] end).注意fun必须是一个文字函数,即ets:fun2ms/1 调用中输入的函数,而不是绑定一个变量的那个。如果在模块中使用,需要包含一个头文件: -include_lib(“stdlib/include/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 返回的是全部匹配模式的元组。详见 224-22515、当遍历表的时候需要使用safe_fixtable/2 锁定表,因为在遍历时具有破坏性的操作会引起运行时错误或者更糟,将导致无法预计的行为,把遍历操作封装在catch语句中是个好主意,因为我们需要保证在发生运行时错误时释放表。16、如果要发送信息给位于节点foo@STC的一个叫做frequency的进程,需要采用 {frequency,foo@STC} ! Message17、如果一个节点可以与其他节点通信,它被称为存货节点。用erlang:is_alive()测试本地运行时系统是否为存活状态,用net_kernel模块函数可以改变系统的存活状态,可以使用node/0内置函数找出当前节点的名字(foo@STC.local)18、长名字节点只能与其他具有长名字的节点通讯,短名字节点只能与其他具有短名字的节点通讯。19、在基本的Erlang RPC实现中,函数调用被一个消息的发送和接收代替 p25520、gen_server模块的函数start将生成新的进程,改进程使用已经提供的参数调用CallbackModule模块中的init(Arguments)回调函数。函数init必须初始化服务器的LoopData,并返回一个格式为 {ok,LoopData}的元组。21、-behav

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档