4

我正在学习一些 Erlang 教程,并在我进入时注意到

[8].

虚拟机返回“\b”或者如果我输入

[9].

虚拟机返回“\t”

我很困惑为什么会这样。其他数字作为该数字的列表返回:

[3].

返回为 [3]

[4].

返回为 [4] 等。

我想问题是为什么 erlang VM 会以这种方式返回它?也许是对列表 [65] 和列表的解释?“一个”。
另一个相关的项目也令人困惑:类型转换,将列表转换为整数是这样完成的:

list_to_integer("3").

不是

list_to_integer([3]).

返回错误

4

3 回答 3

8

在 Erlang 中没有真正的字符串。字符串是整数列表。因此,如果您给出一个包含表示字符的整数的列表,那么它们将显示为字符串。

1> [72, 101, 108, 108, 111].
"Hello"

如果您指定的列表中至少包含没有对应字符的元素,则该列表将按原样显示。

2> [72, 101, 108, 108, 111, 1].
[72,101,108,108,111,1]
于 2013-10-31T04:21:12.830 回答
1

在 Erlang 中,字符串是列表,符号完全相同。

[97,98,99].

返回“abc”

以下摘录直接摘自“Learn You Some Erlang for Great Good!”,Fred Hébert,(C)2013,No Starch Press。页。18.

这是 Erlang 中最不喜欢的东西之一:字符串。字符串是列表,符号完全相同。为什么人们不喜欢它?
因为这:

3> [97,98,99,4,5,6].   
[97,98,99,4,5,6]   
4> [233].   
"é"   

仅当其中至少一个不能代表字母时,Erlang 才会将数字列表打印为数字。Erlang 中没有真正的字符串!

“向你学习一些 Erlang 的好处!” 也可在线获取: http: //learnyousomeerlang.com/

于 2013-10-31T04:21:31.920 回答
1

kadaj 回答了你的第一个问题。关于第二个list_to_integer,如果你查看文档,除了,之外的大多数list_to_XXX函数,并将它们的参数视为字符串。调用它们可能更清楚,但更改名称会破坏很多代码。binarybitstringtuplestring_to_XXX

于 2013-10-31T15:28:36.013 回答