Erlang技巧备忘

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 表示当前模块名 
?MODULE_STRING 同上,但是以字符串形式 
?FILE 当前模块的文件名 
?LINE 调用的当前代码行数 
?MACHINE 机器名 
Erlang的宏与C语言的宏很相似,同样有宏指示符,包括:

-undef(Macro).
取消宏定义
-ifdef(Macro).
当宏Macro有定义的时候,执行以下代码
-ifndef(Macro).
同上,反之
-else.
接在ifdef或者ifndef之后,表示不满足前者条件时执行以下代码 
-endif.
if终止符
假设宏-define(Square(X),X*X).用于计算平方,那么??X将返回X表达式的字符串形式,类似C语言中#arg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值