为什么[9]在Erlang中以“\ t”的形式返回?

时间:2013-10-31 02:03:11

标签: erlang

我正在处理一些Erlang教程并在我输入时注意到

[8].

VM返回“\ b” 或者如果我输入

[9].

VM返回“\ t”

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

[3].

以[3]

返回
[4].

以[4]等方式返回

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

list_to_integer("3").

list_to_integer([3]).

返回错误

3 个答案:

答案 0 :(得分:8)

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

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

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

2> [72, 101, 108, 108, 111, 1].
[72,101,108,108,111,1]

答案 1 :(得分:1)

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

[97,98,99].

返回“abc”

以下摘录直接来自“了解你的一些二郎以获得伟大的好处!”,FredHé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/

答案 2 :(得分:1)

kadaj回答了你的第一个问题。关于关于list_to_integer的第二个问题,如果您查看the documentation,除list_to_XXXbinarybitstring之外的大多数tuple函数都会考虑他们的论点作为一个字符串。调用它们string_to_XXX可能更清楚,但更改名称会破坏大量代码。