Erlang 编程/附加类型
外观
我们已经看到了以下类型:元组、列表、整数、浮点数、函数和 pid。我们可以通过测试来检查对象的类型。
1> is_pid( self() ). true
如果你想在类型之间转换,列表是 Erlang 中类型的通用语言,所以首先把它变成一个列表,然后再转换成其他类型。请记住,类型转换不是一个并行安全的操作。
一些额外的类型是:端口和引用。
端口是与外部世界的连接。通常端口生成和/或消费位流。二进制数据在 Erlang 中被认为是无类型的。 (见 BitSyntax)。
引用是一个全局唯一的符号,用
19> make_ref(). #Ref<0.0.0.88>
引用只有在所有连接的进程都需要一个唯一的标签时才有用。不要将引用术语与 C 中的引用混淆,后者指向数据。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}。