1、and or 和andalso orelse的区别
and和or会计算两边的表达式,而andalso和orelse的求值采用短路机制,比如exp1 andalso exp2,当exp1返回false之后,就不会去求值
exp2,而是直接返回false,而exp1 and exp2会对exp1和exp2都进行求值,or与orelse也类似。
2、在Erlang中小于等于是用=<表示,而不是一般语言中的<=语法,同样,不等于都是用/号,而不是!,比如/=、=/=。
3、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
基本都是些用于逻辑运算、位运算以及特殊表达式的符号
4、模块的预定义属性: -module(Module).
声明模块名称,必须与文件名相同 -export(Functions).
指定向外界导出的函数列表 -import(Module,Functions).
引入函数,引入的函数可以被当作本地定义的函数使用 -compile(Options).
设置编译选项,比如export_all
-vsn(Vsn). 模块版本,设置了此项,可以通过beam_lib:version/1
获取此项信息
可以通过-include和-include_lib来包含文件,两者的区别是include-lib不能通过绝对路径查找文件,而是在你当前Erlang的lib目录进行查找。
5、宏,定义常量或者函数等等,语法如下:
-define(Const, Replacement). -define(Func(Var1,...,VarN), Replacement).
使用的时候在宏名前加个问号?,比如?Const,Replacement将插入宏出现的位置。系统预定义了一些宏: ?MODULE 表示当前模块名
?FILE 当前模块的文件名
?MODULE_STRING 同上,但是以字符串形式
?LINE 调用的当前代码行数
?MACHINE 机器名
Erlang的宏与C语言的宏很相似,同样有宏指示符,包括:
-undef(Macro).
- 取消宏定义
-ifdef(Macro).
- 当宏Macro有定义的时候,执行以下代码
-ifndef(Macro).
- 同上,反之
-else.
- 接在ifdef或者ifndef之后,表示不满足前者条件时执行以下代码
-endif.
- if终止符