代码改变世界

Programming Erlang_CHAPTER2_Basic Erlang 学习笔记(2)。

2012-05-01 15:43  鹏_  阅读(193)  评论(0编辑  收藏  举报

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. 97

  2.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 包含一系列的函数。这些函数都是全局函数。