erlang列表:丢弃奇怪的结果

时间:2012-04-06 11:55:43

标签: erlang list-comprehension

有人可以帮我理解这里发生了什么

lists:dropwhile(fun(X) -> X < 8 end, lists:seq(1,10)).

"\b\t\n" % ??? what is this ? why not [8,9,10]

lists:dropwhile(fun(X) -> X < 7 end, lists:seq(1,10)).  

[7,8,9,10] % this is correct

1 个答案:

答案 0 :(得分:13)

在这两种情况下,您的结果都是正确的。第一种情况下的意外字符串 是因为Erlang中的字符串只是整数列表。因此,Erlang选择将您的第一个列表解释为字符串,因为它只包含可打印的ASCII码。在第二种情况下,列表包含代码7,这是不可打印的,因此Erlang被强制将其解释为整数列表。

您始终可以使用

打印实际的整数列表
MyList = lists:dropwhile(fun(X) -> X < 8 end, lists:seq(1,10)),
io:format("~w", [MyList]).