5.元组(Tuples)
1.使用tuple可以实现复杂的数据结构
2.使用封闭的花括号创建tuple,其中的数据项是匿名的
3.tuples可以嵌套使用 4.tuple有垃圾回收机制,无需自己整理内存,当变量不使用后可以自动回收空间。 5.可以将一个tuple绑定到一个变量上,之后这个变量也就有了相同的结构 6.可以使用将一个结构相同的tuple变量赋值给另一个tuple(不能是tuple变量),则会将tuple变量中的对应值赋给左值tuple中的对应变量。例如Point = {point, 10, 45}. {point, X, Y} = Point.之后则精确的将10赋给X,45赋给Y。其中的point可以是=号两边精确的匹配,体现=号的匹配作用。 7. 1> Person={person,{name,{first,joe},{last,armstrong}},{footsize,42}}. 2> {_,{_,{_,Who},_},_} = Person.如上,_是一个占位符,这样可以用单个变量提取tuple中的值。在Erlang中称其为匿名变量。
6.列表(List)
1. 列表用来存储数目可变的东西。
2. 将若干个以逗号分割的值以[]分开,就形成了一个列表。3.列表的定义:
如果T是一个列表,那么[H|T]也是一个列表。H为头,T为尾。中间|将头和尾分开。[]表示空列表。
4. 列表好像是一个栈,它的插入读取操作都是从头开始的。
5. 用模式匹配从头开始操作列表,[X|T] = [1, 2,3]. or [X,Y|T] = [1,2,3,4]。7.字符与字符串(Characters and Strings) 1.字符用整型数字代表,字符串用整型数字列表表示。1>$A. 65 2>$A+32. 97 3>$a. 972.Erlang中没有字符串。字符串用ASCII码列表表示:
4>[65,66,67]. "ABC"
3.erlang中字符串必须用双引号(“)括起来(单引号是原子),其实质是一个整数的列表.
8.原子与字符串。
1.原子唯一可以做的操就是比较。而字符串有很多不同的操作。
2.你可以用字符串来代替原子。
9.比较:
1.== Equal to 1==one.fase; one==ne true; 1==1.0 ture; 1=:=1.0 fase.
2./= Not equal to
3.=:= Exactly equal to 1=:=1.0 fase ;
4.=/= Exactly not equal to 1=/=1.0 true ;
5.=< Less than or equal to
6.< Less than
7.>= Greater than or equal to
8.> Greater than
不同类型的比较:
number<atom<reference<fun<port<pid<tuple<list<binaty
3>11<ten true
4>{123,456}<[] true
列表比较:比较列表的第一个元素,小的那个列表小。如果第一个元素一样,比较第二个元素,以此类推。
The first elements are compared,and whichever is smaller indicates the smaller list; if they are the same, the second elements are compared . and so on.when one list is exhausted, that is the smaller list.
5>[boo,hoo]<[adder,zebra,bee] . fase
6>[boo,hoo]<[boo,hoo,adder,zebra,bee]. true
元组的比较:先比较元组中元素的数目,在比较元素的值。
7>{boo,hoo}<{adder,zebra,bee}. true
8>{boo,hoo}<{boo,hoo,adder,zebra,bee} . true
10.变量(Variables)
变量不变。
11.模式匹配(Pattern Matching)
1.= 表示一个模式匹配操作。
2.对变量赋值。
3.控制程序的执行流程。
4.提取值在复杂的数据类型。
12.函数(Function)
13.模块(Modules)
1.函数的集合是模块。
2.模块用 -module(name) 来命名。
3.指令 export 包含一系列的函数。这些函数都是全局函数。