跳转到内容

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}。

华夏公益教科书