Erlang入门注意事项,第一期
最近在看Erlang的介绍,对于一个入门级的新人而言,erlang还是有不少需要注意的地方。先简单整理一下,自己备忘或是方便新人吧。。这里记录不是很详细,只是记录了一部分我认为需要特别注意的地方。
1. 变量首字母必须是大写
2. 元子(Atoms):元子是在Erlang中的另一个数据类型。元子以小写字母开头,元子只是一个简单的名字,其它什么都不是。他们不
像变量可以带有一个值。也可以用单引号括起来声明一个元子,此时可使用大写字母开头或包含其他字符 (类似枚举)
3. 元组(Tuple) - 元素 (类似对象)
C:\Documents and Settings\zhys9>erl
Eshell V5.7.5 (abort with ^G)
1> A=a.
a
2> B=b.
b
3> C={char, A,B}.
{char,a,b}
4> {char, First, Second} = C.
{char,a,b}
5> First.
a
在复杂结构的元组中提取变量的另一种提取方式:(使用匿名变量)
6> {_,First1,_}=C.
{char,a,b}
11> First1.
a
4. 列表 (类似数组)
5. 字符串 必须使用双引号; erl中并没有字符串类型,取而代之我们可以提供一个由ASCII字符组成的列表。实际上是一个整数列表;用$a获取字母a的ASCII码值;
6. 变量在它的上下文(作用域)中,只能赋值一次
7. 函数format/2(format带有2个参数)带有两个列表。第一个列表几乎总是在“”中列出。这个列表原样输出,除了~w被使用第二个参数中的对相的元素替换了。每个~n都是一个新行。io:format/2函数自身返回一个元子ok,如果一切都按计划正确执行的话。
8. 注释以%开始,直到本行结束。 如 % comments (意味着不能通%来取模了)
9. 外部函数:在一个模块中声明多个外部可访问的函数:-export([fac/1, mult/2]). 另:局部函数无需在此声明
10. 守卫 guard 在《Erlang程序设计》中被称为“断言”
list_max([Head|Rest], Result_so_far) when Head > Result_so_far ->
list_max(Rest, Head);
list_max([Head|Rest], Result_so_far) ->
list_max(Rest, Result_so_far).
只有很少一部分的内建函数,可以于用守卫,你也无法在守卫中使用你自己定义的函数。
11. 匿名函数:fun
fun可以拥有任意多个参数
1> Fun = fun(A, B) -> A*B end.
#Fun<erl_eval.12.113037538>
2> Fun(2,5).
10
3> Muti=Fun.
#Fun<erl_eval.12.113037538>
4> Muti(3,9).
27
12. 高阶函数:能够返回fun或接受fun作为参数的函数
13. 列表解析:
5> Foo = [{2,2},{3,3},{4,4}].
[{2,2},{3,3},{4,4}]
6> [A*B || {A, B} <- Foo].
[4,9,16]
7> lists:sum([A*B || {A, B} <- Foo]).
29
14. 取余数:6 rem 5 值是1; 取整除数: 7 div 2 值是3;
阅读全文 »










