Erlang中的原子、字符串和二进制串

Erlang中的原子(Atom), 字符串(String)和二进制串(Binary)是有点容易让人糊涂 的东西, 这里归纳一下它们之间的区别与联系。

原子

原子是由小写字母开头, 后接大小写字母及数字及下划线的, 比方说abc, cDE, ff89, 或是由单引号''括起来的任意字符, 比方说'EXIT', '!@#@!$sdaf'。 用过其他语言的话, 会觉得Erlang中没括起来的原子长得像变量, 括起来的 长得像字符串, 但其实都不是, 这点要特别注意。Erlang中的变量是以大写字母 开头的, 字符串是用双引号括起来的。

原子在Erlang中应用非常广, 模块名、函数名、记录名都是原子, 所以如果你够蛋疼的话, 可以用'!#@$#y3fdsa1'(包括两边的单引号)当做函数名。

原子顾名思义是“不可分割”的东西, 原子无论长短, 在内存中占用的空间都是一样的, 然而, 原子的名字也不是毫无意义的, 可以利用atom_to_binary把原子名转成二进制串, 也可以用atom_to_list把原子名转成字符串。 反过来也可以 …

more ...