<?php

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获取字母aASCII码值;

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

Tags:

Leave a Reply