Erlang特点拾遗(1)
%%
.标志语句定义结束
;标志段落
list_max([], Res) ->
Res;
list_max([Head|Rest], Result_so_far) when Head > Result_so_far ->
list_max(Rest, Head); % 这里函数 list_max/2还没有结束
list_max([Head|Rest], Result_so_far) ->
list_max(Rest, Result_so_far). % 函数定义结束
%%
函数的重载是通过参数个数的不同来确定的
%%
函数可以偏特化定义
%%
guard
"when"条件出现在函数定义的右括号后面,标志该部分只在特定条件满足是起作用.
%%
一个变量在一个作用域只能被绑定到一个值一次.
变量要大写字母开头
%%
atoms
类似Ruby的Symbol
%%
{}类似Python的Tuple
%%
[]类似Python的List
%%
函数的参数列表中可以包含运算
list_max([Head|Rest], Result_so_far) ->
list_max(Rest, Result_so_far). % 函数定义结束
[Head|Rest] "|"用来取列表的头元素
%%
erlang的self()取得当前的process id
%%
! 发送消息后返回消息
可以连发:
P1! P2 ! P3 ! Msg
%%
receive可能会阻塞在消息队列上
receive
Pattern1 when ... ->
Do something;
...
PatternX when ... ->
Do something else % 注意这里是最后一个,没有";"
after
XXXXXX ->
Do
end
%%
Erlang的模式匹配和递归是最大的特点.