跳轉到內容

Erlang 程式設計/附加型別

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

附加型別

[編輯 | 編輯原始碼]

我們已經看到了以下型別:元組、列表、整數、浮點數、函式和 pid。我們可以透過測試來檢查物件的型別。

1> is_pid( self() ).
true

如果你想在型別之間轉換,列表是 Erlang 中型別的通用語言,所以首先把它變成一個列表,然後再轉換成其他型別。請記住,型別轉換不是一個並行安全的操作。

一些額外的型別是:埠和引用。

埠是與外部世界的連線。通常埠生成和/或消費位流。二進位制資料在 Erlang 中被認為是無型別的。 (見 BitSyntax)。

引用是一個全域性唯一的符號,用

19> make_ref(). 
#Ref<0.0.0.88>

引用只有在所有連線的程序都需要一個唯一的標籤時才有用。不要將引用術語與 C 中的引用混淆,後者指向資料。Erlang 引用只是一個唯一的標籤。

Erlang 沒有布林型別

[編輯 | 編輯原始碼]

Erlang 沒有布林型別。它有原子(true 和 false),這些原子由某些函式生成,並由某些函式(如守衛和列表推導)期望。函式:is_constant() 生成 true 或 false。

我們可以測試一個物件是否是一個常量。

1> is_constant(a) 
true
2> is_atom(a).
true

因為原子用常數表示,所以原子是常量。

is_constant(A). 
** 1: variable 'A' is unbound **
5> A=1.
1
6> is_constant(A).
true

理論上,因為布林型別不是內建的,所以它應該更容易讓 Erlang 用其他型別的邏輯計算,例如 {true, false, null}。

華夏公益教科書