6

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

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
4

1 回答 1

14

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

您始终可以使用打印实际的整数列表

MyList = lists:dropwhile(fun(X) -> X < 8 end, lists:seq(1,10)),
io:format("~w", [MyList]).
于 2012-04-06T12:27:36.680 回答