我正在处理一些Erlang教程并在我输入时注意到
[8].
VM返回“\ b” 或者如果我输入
[9].
VM返回“\ t”
我很困惑为什么会这样。其他数字将作为该数字的列表返回:
[3].
以[3]
返回[4].
以[4]等方式返回
我想问题是为什么erlang VM会以这种方式返回它?也许是列表[65]和列表的解释? “A”。
另一个相关项目也令人困惑:
将列表转换为整数的类型转换如下:
list_to_integer("3").
不
list_to_integer([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_XXX
,binary
和bitstring
之外的大多数tuple
函数都会考虑他们的论点作为一个字符串。调用它们string_to_XXX
可能更清楚,但更改名称会破坏大量代码。