2012-04-06 9 views
6

kann mir bitte jemand helfen zu verstehen, was hier loserlang Listen: dropwhile seltsame Ergebnis

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 

Antwort

13

Ihre Ergebnisse sind in beiden Fällen tatsächlich korrekt. Die unerwartete Zeichenfolge im ersten Fall ist aufgrund der Tatsache, dass in Erlang Strings nur Listen von ganzen Zahlen sind. Aus diesem Grund interpretiert Erlang Ihre erste Liste als Zeichenfolge, da sie nur druckbare ASCII-Codes enthält. Im zweiten Fall enthält die Liste den Code 7, der nicht druckbar ist, so dass Erlang gezwungen ist, ihn als Integer-Liste zu interpretieren.

Sie können jederzeit die aktuelle integer Liste drucken, indem Sie

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

Dank für die Erklärung, dass würde erklären, warum diese '[68, 97, 121, 97] .' Daya ist –

+0

sorry ich bin noch neu auf die Seite wollte ich deine Antwort nicht ignorieren. Es löst meine Frage. –

+0

Mach dir keine Sorgen. Froh, dass ich helfen konnte. :) – 3lectrologos