黄小华的个人网站
熬过无人问津的日子才有诗和远方!
Erlang基本数据结构
  1. 整数 Integer
        Erlang可表示任意大的整数,大整数自动转换成bignums类型,比固定大小的整数类型相对效率较低。
        16#2A 其中2A是一个16进制的数。如:2#1010是二进制。
        $Character 表示字符的ASCII码。如:$a = 97  $\n。
  2. 浮点数 Float
  3. 基元 Atom
    表示文字常量,相当于Java中的“static final”。
          操作:比较
          基元:由小写字母开头或由单引号界定。
                  当以字母开头时:字母,数字,@,句点,下划线_ 都有效。
                  当以单引号界定时:任意字符有效。
            基元按照字典顺序排序。
  4. 元组 Tuple
           元组用来保存一组数据元素的复合数据类型。
           使用{}界定,元素由逗号隔开。
           当元组的第一个元素是基元(atom)时,称为标记(tag)。
           元组的元素索引从1开始。
  5. 列表 List :
    使用[]界定,元素由逗号隔开。
    List的递归定义: List = [Element|List] or []
    如果分解后的列表最后一个尾部项是一个空列表,那么这是一个正确的列表或结构良好的列表。
    结构不良好的列表在支持需求驱动或延迟(Lazy)编程方面很有用。
    列表操作:分解[Head|Tail],列表相加++ ,列表相减-- .
    在一个列表前加一个元素,有两种方法:
    a). 直接使用构造器,如:[1|[2,3,4]]
    b). 使用运算,如:[1][2,3,4]
    两种方法比较:++运算效率更低,可能导致程序运行时速度大幅度降低。
    6.字符串
    在Erlang中没有字符串类型,实际是字符的整数列表。
    基元与字符串的比较:
  6. 操作不同:基元只能进行比较操作,字符串进行列表操作。
  7. 效率不同:
    a) 空间:字符串所占空间与字符串大小成正比。基元在系统表中表示,仅需要几个字节做索引,与它的大小无关。
    b) 时间:字符串比较,系统要遍历他们比较字符串的每个字符。基元比较只需比较它们的内部标识符。
  8. 可使用字符串表示一个基元,即把字符串当作一个常量。
    元组与列表的比较:
    处理方式不同:元组只能提取具体元素;列表只要不为空,就可以分成头部和尾部。然后尾部还可以继续分解。
    7.变量
    变量以大写字母开头,后跟字母、数字、下划线。变量只能绑定一次。
    Erlang中所有变量都是局部的,不存在全局变量。
    Erlang中所有函数变量调用都是按值调用,不存在引用调用。
    Erlang中的变量不需要声明,只需要使用。(Erlang具有动态类型系统。)
    8.数学运算符:
            /          浮点除法
            div       整数除法
            rem      整数取余
    9.比较运算符
    == 等于   /= 不等于
    =:=  精确等于   =/= 精确不等于

 >=  <  =< 
==和/=  忽略两边的具体数据类型,只比较两边的值。
列表的比较:列表按字典顺序排列,逐个比较元素的值
元组的比较:先比较元素个数,如果个数相同再逐个比较元素的值
10.逻辑运算符
     and  andalso(短路与,相当于Java中的&&)  
    or  orelse(短路或,相当于Java中的||)