2012-04-06 63 views
6

有人可以幫我明白是怎麼回事二郎列表:dropwhile怪異的結果

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 

回答

13

您的結果實際上是在兩種情況下是正確的。第一種情況下的意外字符串 是由於Erlang字符串只是整數列表。因此,Erlang選擇將第一個列表解釋爲一個字符串,因爲它只包含可打印的ASCII代碼。在第二種情況下,列表包含代碼7,這是不可打印的,所以Erlang被迫將其解釋爲整數列表。

你總是可以通過使用

MyList = lists:dropwhile(fun(X) -> X < 8 end, lists:seq(1,10)), 
io:format("~w", [MyList]). 
+0

感謝您的解釋打印的實際整數列表,這可以解釋爲什麼這個'[68,97,121,97] .'是大亞灣 – 2012-04-06 17:03:12

+0

對不起,我現在還是新到網站並不意味着無視你的答案。它確實解決了我的問題。 – 2012-05-11 03:50:41

+0

別擔心。很高興我能幫上忙。 :) – 3lectrologos 2012-05-12 01:12:54