1、变量
所有变量必须以大写字母开头。
如:X
Y
2、模式匹配
在Erlang中,=表示一个模式匹配操作, Lhs=Rhs实际是对右端求后,将结果与左端求值进行匹配。 其中如果左端为未绑定变量,则完全匹配,并赋值到左端。
3、浮点数
"/"永远返回浮点数, N div M 和 N rem M是用于整数除和取余数。
如:0.32
4、原子
在Erlang中,原子用来表示不同非数字常量值;
原子是以一串以小写字母开头,后跟数字字母或下划线或邮件符号的字符串;使用单引号引起来的字符串也是原子。
如:red、cat、joe@somhost、a_lang_name、'an atom'
5、元组(tuple)
将若干个以逗号分割的值用一对花括号括起来,就形成了一个元组。
如:{1,a,3}
{3,"adsf",2}
{person,{name,joe}}
创建元组:
F = {firstName, joe}
P = {person, F}
取元组中字段值:
Point = {point, 10, 45}
取值 10,45可以如下操作
{point, X,Y} = Point.或者{_,X,Y}
6、列表
将若干个以逗号分割的值用一对方括号括起来,就形成了一个列表。
如:[{apple,10},{pears,6}]
定义列表:
如果T是一个列表,那么[H|T]也是一列表。
竖线符号(|)可以将列表的头和尾分隔开来,面[]表示空列表。
也可以用[[E1,E2,...|T]这种形式向T的起始加入多个元素。并不能从后加入呢。
常用成员函数:
foldl: %% foldl(Fun, Acc0, List) -> Acc1
> lists:foldl(fun(X, Sum) -> X + Sum end, 0, [1,2,3,4,5]).
Fun的参数为(Elem, AccIn), 其中AccIn 以Acc0初始化,返回值累计值,作为下一次AccIn的输入值。 从左向右。
filter: %% filter(Pred, List1) -> List2
> lists:filter(fun(X) -> X > 5 end, [1,2,3,4,5,6,7]).
对成员进行过滤, 成员通过函数返回true的,构成一个列表
append: %% append(List1, List2) -> List3
> lists:append("abc", "def").
追加列表,都到一个新列表 。lists:append(A, B) 等同 A ++ B.
7、字符串
严格意义上,Erlang并没有字符串,字符串实际是一个整数列表。用(")将一串字符括起来就是一个字符串。
如:Name = "Hello".
[83,117,114,112,114,105,115,101].就是"Surprise"
8、记录
记录就是一个提供了基于名字访问成员的元组。
记录的结构如下:
record在原代码文件中定义
-record(person, {name="",phone=[], address}).
定义记录:
在console中的定义
rd(person,{name="",phone=[],address}).
创建记录:
P = #person{phone=[0,3,2,4,5], name="robert"}.
访问字段:
P#person.name.
更新记录:
P2 = P#person{name="joe"}.
匹配:
#person{name=Name} = P2, Name.
Shell 命令:rr/1 读入文件中的记录
(om@Vaio)5> rr(usr).
[usr]
9、进程词典
每个进程都有一个名叫“进程字典”的本地存储。 如下的BIF用来操作它:(对原值操作时,都会返回旧值)
get() 返回整个进程词典
get(Key) 返回与Key关联的内容(Key 是任意erlang结构), 或者,未找到返回undefined.
put(Key, Value) 把值和键进行关联 .返回与该值关联的旧值
erase() 清空整个词典
erase(Key) 清空指定键
get_keys(Value) 取指定键
10、守护判断
number(X) - X is a number
integer(X) - X is an integer
float(X) - X is a float
atom(X) - X is an atom
tuple(X) - X is a tuple
list(X) - X is a list
length(X) == 3 - X is a list of length 3
size(X) == 2 - X is a tuple of size 2.
X > Y + Z - X is > Y + Z
X == Y - X is equal to Y
X =:= Y - X is exactly equal to Y
(i.e. 1 == 1.0 succeeds but
1 =:= 1.0 fails)