Erlang开发及应用361教学提纲.pptErlang开发及应用******@WhatisErlang?ERicssonLANGuage?函数式编程语言(FP)面向并发(OC),基于消息Ericsson创建,最初用于电信系统开发成熟,稳定,具有20多年历史适于电信系统,分布式系统,高并发服务器OpenSource,跨平台,GC 不适于底层系统开发History1980sEricsson实验室思考如何轻松开发电信系统应用1987年左右,Erlang浮出水面1989年JAM虚拟机C语言实现 1996年OTP项目启动,融合开发经验,提供易用,强大的Erlang开发库1998年开源2007年《ProgrammingErlang》出版目前版本ErlangR13B1():1-module(hello).pile([export_all]).34main()->5 io:format("helloworld!~n").编译: $: $ (abortwith^G)1>hello:main().helloworld!okErlangHelloWorldCON'T1-module(hello).声明模块名称,([export_all]).指明编译选项,export_all用来导出所有本模块中的函数,exportedfunction是模块的接口,其他模块只能调用exportedfunction4main()->为函数头(head),包含函数名称和参数,后紧随一个'->'分割符5 io:format("helloworld!~n").为函数体(body),包含Erlang表达式,这里调用io模块的format函数在默认输出中打印"helloworld!"在上面的运行结果中,最后有一个"ok",这是io:format/1的返回值,表示打印成功, 8种基本类型integer-4, -4,2#100,16#4,920828990801238101010..float-,,-2,(IEEE75464bit)atom-hello,your_name,******@host,'IsAtom'binary-<<"sometext">>reference-make_ref(),一个随机值fun-fun()->some_exprendport-与外部应用进行交互的接口pid-processidentifier,用来操作process 2种复合类型tuple-{foo,male,28,china,<<"iloveerlang">>} list-[{ip,any},{port,1234},binary]Erlang语法CON'TPatternMatch 语言层级的模式匹配,代码更加简洁. 适用于函数调用,case,receive,try表达式及"="操作 caseValueof Nwhenis_integer(N)->N; _whenis_list(Value)->list_to_integer(Value) end 变量大写字母或"_"开头,只能包含数字,字母,"_","@".如X,Name1,_Phone,_,Host@变量分为Unbound和Bound,,Value就不可修改 变量只能单次赋值(并发及调试考虑)N=3(ok)N=4(oops!notmatch)Erlang语法CON'TBinary匹配使用binary可以轻松的实现二进制协议.(1)解析IP包:-define(IP_VERSION,4).-define(IP_MIN_HDR_LEN,5)....DgramSize=size(Dgram),caseDgramof<<?IP_VERSION:4,HLen:4,SrvcType:8,TotLen:16,ID:16,Flgs:3,FragOff:13,TTL:8,Proto:8,HdrChkSum:16,SrcIP:32,DestIP:32,RestDgram/binary>>whenHLen>=5,4*HLen=<DgramSize->OptsLen=4*(HLen-?IP_MIN_HDR_LEN),<<Opts:OptsLen/binary,Data/binary>>=RestDgram,Erlang语法CON'T(2)自定义协议假如我们定义了一个协议,前2bytes
Erlang开发及应用361教学提纲 来自淘豆网m.daumloan.com转载请标明出处.