Erlang 数据类型

Erlang 数据类型


1、数值(整数和浮点数)

    Erlang中整数的大小没有限制(唯一的限制就是物理内存的大小),运算时整数和浮点数会自动进行类型转换,因此用不上显式强制类型转换。


    使用数字0~9和字母A~Z/a~z 表示从2到36进制的数。

    16#FFFF        十六进制的数

    2#10010       二进制的数

    36#zz           三十六进制的数    


    可用$前缀记法得到任意字符的ASCII码。

    $6

    $D

    $?


    浮点数使用64位IEEE 754-1985格式(双精度)。没有单精度浮点数。

    记法与大部分编程语言相同,唯一区别是只能以数字开头,不允许使用类似.01的记法。

    3.14

    -0.324

    6.89e-13

    

2、二进制串/位串

    一个包含在<<...>>中的整数序列。

    <<0, 1, 2, 3>>

    用字符串构成二进制串。

    <<"hello", 32, "world">>    返回<<"hello world">>,其中32为空格对应的ASCII码。


3、原子

    在Erlang中原子用作标签。使用前不需要声明,可以随意创建并随处使用。

    原子以小写字母开头,在首字母后,可以使用大写字母、数字、下划线和@。

    abc55_ofgg

    如果还要使用到其他字符,就要给他们加上单引号。  

    '$%#*!'


    长度上限是255个字符。在单个系统中原子的个数上限是1048576个。  

    原子一经创建,即便不再使用也永远不会被清除,除非系统重启。


    常用原子:

    true和false用于布尔运算;

    ok用于那些返回值没有任何意义、仅通过副作用发挥作用的函数;

    undefined用作表示未知量的占位符。   


4、元组

    元组是其他Erlang项式的定长有序序列。元组可以包含零个、一个或多个元素。其中的元素可以是相同数据类型的也可以是不同数据类型的。元素本身也可以是元组。

    {}

    {1, 2, 3}

    {one, 2, "with love"}

    {complex, {need, "half", {here}}}


    标记元组:

    用原子作为第一个元素来标记元组数据的类别。

    {size, 42}

    {position, 5, 2}

    

5、列表(和字符串)

    零个或多个Erlang项式的序列。空表[]被称为nil(它的值只占一个字长的内存)。

    引用透明性:被名称所引用的值不可更改。列表可用于存放任意多个项式。

    []

    [1, 2, 3]

    [[1, 2, 3], [4, 5, 6]]

    [{toto, "momo"}, {lili, 89}]


    添加列表元素:(新元素从左侧加入)

    管道符|

    [ 1 | [] ]    将1添加到空列表中

    [ a, b, c | [1, 2, 3] ]        返回[a,b,c,1,2,3]

    运算符++

    [a, b, c] ++ [1, 2, 3]      返回[a,b,c,1,2,3]


    Erlang中的双引号字符串实际就是列表。

    "abcd"    等价于    [97, 98, 99, 100] 或 [$a, $b, $c, $d]

    在列表起始处添加一个零,可迫使shell打印出实际内容。

    v(65)为"abcd"    [0 | v(65)] 为 [0, 97, 98, 99, 100]

    

6、唯一标识符(pid、端口、引用)

    ​pid:每个进程的唯一标识符。

    ​pid在Erlang中是一种特殊的数据类型。

    ​原则上在系统的生存期内所有的pid都是唯一的,但事实上,当系统运行的时间长到一定程度,前后创建的进程总数过亿时,进程的标识符就有可能被重用。    ​


    ​调用函数self()可查看当前进程的pid。

    ​shell打印pid的格式为:<0.94.0>

    ​端口:与进程的区别是,能与Erlang外界通信。

    ​shell打印端口的格式为:#Port<0.472>

    ​引用:用于保障唯一性的一次性标签或coockie。

    ​shell打印引用的格式为:#Ref<0.0.0.407>

    ​调用函数make_ref()可生成引用。

7、Fun函数

    ​函数式语言:可以像处理数据一样处理函数。函数可以成为别的函数的输入,也可以成为别的函数的求值结果。

    ​在Erlang中将函数包装成数据的对象称作fun函数(闭包)。

    ​






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值