清单
Erlang 中的列表是零个或多个 Erlang 项的序列,实现为单链表。列表中的每个元素可以是任何类型的术语(任何数据类型)。
1> [1,2,3].
[1,2,3]
2> [wow,1,{a,b}].
[wow,1,{a,b}]
列表的头部是列表的第一个元素。
列表的尾部是列表的其余部分(没有头部)。它也是一个清单。
你可以使用 hd/1
和 tl/1
或匹配 [H|T]
来获取列表的头部和尾部。
3> hd([1,2,3]).
1
4> tl([1,2,3]).
[2,3]
5> [H|T] = [1,2,3].
[1,2,3]
6> H.
1
7> T.
[2,3]
将元素添加到列表中
8> [new | [1,2,3]].
[new,1,2,3]
连接列表
9> [concat,this] ++ [to,this].
[concat,this,to,this]
字符串
在 Erlang 中,字符串不是单独的数据类型:它们只是表示 ASCII 或 Unicode 代码点的整数列表:
> [97,98,99].
"abc"
> [97,98,99] =:= "abc".
true
> hd("ABC").
65
当 Erlang shell 打印一个列表时,它会尝试猜测你是否真的认为它是一个字符串。你可以通过调用 shell:strings(false)
来关闭该行为:
> [8].
"\b"
> shell:strings(false).
true
> [8].
[8]
在上面的示例中,整数 8 被解释为退格的 ASCII 控制字符,shell 认为它是字符串中的有效字符。