2010-06-01
2.5 简单的整数运算
- 在Erlang中,整数运算没有误差,不用担心运算溢出,即Erlang支持超大整数的计算。
2.6 变量
- 所有的变量都必须以大写字母开头
- 变量不变。Erlang中一个变量一旦被赋了值,则不能再改变,否则会抛出错误。变量未赋值之前被称为自由变量,一旦被赋值之后被称为绑定变量。在Erlang中,=是一个模式匹配运算符。定义一个变量的词法单元就是这个变量的作用域。
- Erlang没有共享内存,更没有锁,这一切都有利于并行化程序的编写。
2.8 原子
- 在Erlang中,原子用来表示不同的非数字常量值
- Erlang中的原子是全局有效的,而且无需使用宏定义或者包含文件。
- 原子是一串以小写字母开头,后跟数字字母或下划线(_)或邮件符号(@)的字符。
- 使用单引号引起来的字符也是原子。使用这种形式,使得原子可以用大写字母作为开头或者包含非数字字符,例如'Monday', '+'。
- 一个原子的值就是原子本身。
2.9 元组(tuple)
- 将若干个以逗号分割的值用一对花括号括起来,就形成了一个元组。例 {joe, 1.82}
- Erlang中的元组中的字段没有名字。为了方便记忆,通常可以使用一个原子作为元组的第一个元素来表明这个元组所代表的含义。用{point,10,45}来代替{10,45},这能使得程序更为清晰易懂。
- 用模式匹配操作符=,从元组中提取一些字段值。例如,Point = {point,10,45}.; {point, X, Y} = Point. 这样X的值为10,Y的值为45.(注:X,Y必须为自由变量)
- {_,{_,who}} = {persion,{name,xp}},则who=xp。这里下划线"_"作为占位符,表示那些我们不关心的变量。符号_称为匿名变量,与常规变量不同,在同一个模式中的不同地方,各个_所绑定的值不必相同。
2.10 列表
- 用列表存储数目可变的东西。将若干个以逗号分割的值用一对方括号括起来,就形成了一个列表。例如,[{apples,10},{pears,6}].
- 列表中的各个元素可以有各自不同的类型。例如,[1+7,hello,{apple,10}].
- 列表的第一个元素称为列表的头(head),剩下的东西就成为列表的尾(tail).(注:列表的头可以是任何东西,但是列表的尾通常还是一个列表)
- 如果T是一个列表,那么[H|T]也是一个列表,这个列表以H为头,以T为尾。竖线符号(|)可以将列表的头和尾分隔开来,而[]则是空列表。
2.11 字符串
- Erlang中字符串实际上就是一个整数列表。
- 用双引号(")将一串字符括起来就是一个字符串