前言
分享一下学到的 Erlang 技巧。
Erlang Shell
Erlang Shell 中有很多实用的内置函数,直接输入 help()
即可看到所有的函数名以及说明。
其中,rp(Term)
这个命令可以显示参数 Term 的完整数据,可以解决 Shell 中长数据显示为省略号的问题。
对于 Erlang Shell 清屏的命令 io:format(os:cmd(clear))
,这个好像真的不起作用...
执行一句 catch_exception(true)
可以解决 Erlang Shell 遇到异常重启的问题。
原子的个数
原子是不会垃圾回收的,当原子个数达到最大时(默认为 1048576 ),节点会直接 crash,在新版 OTP 中可以直接使用 erlang:system_info(atom_limit)
和 erlang:system_info(atom_count)
得到最大值和当前值。
操作符的顺序
列表解析
列表解析是一种无须使用 fun 或 map 或 filter 来创建列表的表达式,它的格式通常如下:
[Expr || Qualifier1, ... , QualifierN]
Expr 是一个任意表达式,每个 Qualifier 可以是生成器或者是筛选器,对于 Qualifier 的数量没有最多限制,最少有一个。列表解析返回一个列表,其中的元素是当 所有 过滤器都为 true 时计算 Expr 的结果。
快速排序的简单实现:
sort([Pivot|T]) ->
sort([ X || X <- T, X < Pivot]) ++
[Pivot] ++
sort([ X || X <- T, X >= Pivot]);
sort([]) -> [].