Erlang知识点补充

  1. 动态产生原子会内存泄漏?怎么动态的产生原子?(erlang趣学指南第6页)

  2. 函数中的最后一个表达式的执行结果会被自动作为返回值转递给调用者。

  3. 在Erlang社区中,在模块的概括性注释(模块是做什么的,许可证等)以及模块的区段分隔注释(共有代码、私有代码、辅助函数等)中使用3个百分号。在所有其它需要放置在独立行中的注释使用2个百分号(%%),并和周边的代码采用同样的缩进。防止代码之后的行内注释,使用单个%。

  4. module、export、import

  5. =:=、=/=会区分数据类型,==、/=不区分精度!

  6. 小于等于 : =< ,而不是 <=

  7. 数据类型之间的大小顺序是:number

  8. 注意以[1|2]这种形式构建出来的列表称为非良构列表(improper list)。非良构列表可以用于[Head|Tail]这种形式的模式匹配,但是在Erlang的标准函数(即使是length())中使用时会失败。这是因为Erlang期望的是良构列表(proper list)。良构列表的最后一个元素是空列表。当定义一个像[2]这样的数据项时,这个列表会被自动地转换成良构形式。同样,[1|[2]]也会被转换成良构形式。尽管非良构列表是合乎语法的,但是除了某些用户自定义数据结构,它们的用途非常有限。

Erlang知识点补充_第1张图片
image.png
  1. <> = <<213,45,132,……>>.

Rest/binary会自动匹配剩下的元素。

  1. 理解二进制推导式和列表推导式

  2. define 宏定义

  3. 一定要避免环形依赖

  4. 函数头中可以使用=操作符,例如:

valid_time( { Date = {Y,M,D} }) ->
 io:format("The Date tuple (~p) says today is : ~p/~p/~p,~n",[Date,Y,M,D]).
  1. 当 X = 0 ,Y = 1 时,when 5 / X =/= 0 ; 5 / Y =/= 0 ->前半部分在执行时抛出了异常,后半部分还会被执行,整个卫语句还能通过。而when 5 / X =/= 0 orelse 5 / Y =/= 0 ->抛出异常后,卫语句则会失败!
test_fun(X, Y)
  when 5 / X =/= 0 orelse 5 / Y =/= 0 ->
  1;
test_fun(X, Y)
  when 5 / X =/= 0; 5 / Y =/= 0 ->
  2.

你可能感兴趣的:(Erlang知识点补充)