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函數(閉包)。

    ​






發佈了38 篇原創文章 · 獲贊 8 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章