跳轉到內容

Erlang 程式設計/術語

來自華夏公益教科書,開放的書籍,用於開放的世界

← 入門 | 模式匹配 →

在 Erlang 中表達值的**基本單位**是**術語**。術語由 Erlang 的簡單型別或複雜型別組成。

整數常量寫為數字,可選地以基數和井號 (#) 為字首

 1> 2.
 2
 2> 16#ff.
 255
 3> 2#1011.
 11

Erlang 使用任意精度的整數,支援任意位數的整數。

Erlang 還提供另一個語法快捷方式:可以將整數寫為美元符號 ($) 和一個字元,其值為該字元的 ASCII 值。這在處理字串時很有用,因為字串通常在 Erlang 中表示為整數列表(參見下面的 字串)。

浮點數

[編輯 | 編輯原始碼]

浮點數(浮點數字)寫為帶小數點的數字,可選地帶有一個用字母 e 與數字分隔的指數。

 4> 1.2.
 1.20000
 5> 1.0.
 1.00000
 6> 2.0e-4.
 2.00000e-4

原子是命名的常量。原子以小寫字母開頭,可以包含字母、數字和下劃線 (_);或者用單引號 (') 括起來。

 1> ok.
 ok
 2> 'OKAY'.
 'OKAY'
 3> this_is_an_atom.
 this_is_an_atom

特殊原子 truefalse 表示布林值。

原子通常用作鍵值對中的鍵,成功和失敗的指示器(例如 okerror),以及識別複雜結構的一部分以進行 模式匹配

元組是由多個值組成的術語,長度固定。元組用大括號 ({}) 括起來,元組的元素(任何 Erlang 術語,包括元組)用逗號分隔。

 1> {ok, 9}.
 {ok,9}
 2> {true, {127, 0, 0, 1}}.
 {true,{127,0,0,1}}
 3> {box, {width, 10}, {height, 35}}.
 {box, {width, 10}, {height, 35}}

第三個例子展示了所謂的標記元組。在可能的情況下使用標記元組,因為它們清楚地表明瞭元組的用途。稍後,我們將研究記錄,這只是標記元組的簡寫。

列表是由多個值組成的術語,長度可變。列表用方括號 ([]) 括起來,列表的每個成員(任何 Erlang 術語,包括列表)用逗號分隔。

列表也可以由頭部和尾部組成,用豎線字元 (|) 分隔:[Head|Tail]。尾部可以是任何有效的 Erlang 術語,但通常是表示頭部之後列表成員的列表

 1> [one, two, three].
 [one,two,three]
 2> [1, 2|[3, 4, 5]].
 [1,2,3,4,5]
 3> [{key1, value1}, {key2, value2}].
 [{key1,value1},{key2,value2}]

尾部是最小的空列表 ([]) 的列表被稱為良構列表。

Erlang 沒有單獨的字串型別。字串通常由整數列表表示(標準庫的 string 模組操作這些列表)。每個整數代表字串中字元的 ASCII(或其他字元集編碼)值。為了方便起見,用雙引號 (") 括起來的字元序列等效於這些字元的數值列表。

 1> "one".
 "one"
 2> [$o, $n, $e].
 "one"
 3> $o.
 111
 4> $n.
 110
 5> $e.
 101
 6> [111, 110, 101].
 "one"

Erlang shell 會“猜測”給定的列表是否是可列印字串,併為了方便將其打印出來。

程序識別符號 (Pids)

[編輯 | 編輯原始碼]

Pid 或程序識別符號是 Erlang 中的一種特殊型別。要檢視 Pid 的樣子,可以使用 self() 獲取自身的 Pid。

1> self().
  <0.29.0>

引用 (Refs)

[編輯 | 編輯原始碼]

引用(或引用)是一個術語,即使在 Erlang 節點之間也是唯一的。可以透過呼叫 erlang:make_ref() 建立新的引用。引用僅用作唯一的標籤或識別符號。Erlang 引用不應與 C/C++ 中的引用混淆。

2> erlang:make_ref().
#Ref<0.0.0.41>

其他型別

[編輯 | 編輯原始碼]

Erlang 還有其他型別,例如函式(閉包)、位元串、二進位制(任意資料的連續塊)和埠(埠識別符號),將在其相應的章節中介紹。

華夏公益教科書