1。Erlang的保留字有:
after and andalso band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse query receive rem try when xor
基本都是些用于逻辑运算、位运算以及特殊表达式的符号-module(Module).
声明模块名称,必须与文件名相同
-export(Functions).
指定向外界导出的函数列表
-import(Module,Functions).
引入函数,引入的函数可以被当作本地定义的函数使用
-compile(Options).
设置编译选项,比如export_all
beam_lib:version/1
获取此项信息
try Expr catch throw:Term -> Term; exit:Reason -> {'EXIT',Reason} error:Reason -> {'EXIT',{Reason,erlang:get_stacktrace()}} end 不仅如此,try还可以与after结合使用,类似java中的try..finally,用于进行清除作用,比如: termize_file(Name) -> {ok,F} = file:open(Name, [read,binary]), try {ok,Bin} = file:read(F, 1024*1024), binary_to_term(Bin) after file:close(F) end. 5.列表推断(List Comprehensions),函数式语言特性之一,Erlang中的语法类似: [Expr || Qualifier1,...,QualifierN] Expr可以是任意的表达式,而Qualifier是generator或者filter。还是各举例子说明下。 1> [X*2 || X <- [1,2,3]]. [2,4,6] 2> L=[1,2,3,4,5,6,7]. [1,2,3,4,5,6,7]3> [X|X<-L,X>=3]. [3,4,5,6,7]再看几个比较酷的例子,来自Programming Erlang, 比如快速排序: -module(qsort). -export([qsort/1]). qsort([])->[]; qsort([Pivot|T])-> qsort([X||X<-T,X
6.宏,定义常量或者函数等等,语法如下:
-define(Const, Replacement).
-define(Func(Var1,...,VarN), Replacement).
使用的时候在宏名前加个问号?,比如?Const,Replacement将插入宏出现的位置。系统预定义了一些宏:?MODULE 表示当前模块名
?FILE 当前模块的文件名
?MODULE_STRING 同上,但是以字符串形式
?LINE 调用的当前代码行数
?MACHINE 机器名
Erlang的宏与C语言的宏很相似,同样有宏指示符,包括:
-undef(Macro).
-ifdef(Macro).
-ifndef(Macro).
-else.
-endif.
-connect_all false |
上面已经解释。 |
-hidden |
启动一个hidden node |
-name Name |
启动一个系统成为节点,使用long name. |
-setcookie Cookie |
与Erlang:set_cookie(node(), Cookie) .相同,设置magic cookie |
-sname Name |
启动一个Erlang系统作为节点,使用short name |
.一个小细节,在Erlang中小于等于是用=<表示,而不是一般语言中的<=语法,我犯过错误的地方,同样,不等于都是用/号,而不是
!,比如/=、=/=。 10.and or 和andalso orelse的区别 and和or会计算两边的表达式,而andalso和orelse的求值采用短路机制,比如exp1 andalso exp2,当exp1返回false之后,就不会去求值 exp2,而是直接返回false,而exp1 and exp2会对exp1和exp2都进行求值,or与orelse也类似。