Pytanie w sprawie list-comprehension, erlang – erlang listy: dropwhile dziwny wynik

6

czy ktoś może mi pomóc zrozumieć, co tu się dzieje

<code>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
</code>

Twoja odpowiedź

1   odpowiedź
13

Twoje wyniki są w rzeczywistości poprawne w obu przypadkach. Nieoczekiwany ciąg w pierwszym przypadku wynika z faktu, że w łańcuchach Erlang są po prostu listy liczb całkowitych. Dlatego Erlang postanawia zinterpretować pierwszą listę jako ciąg, ponieważ zawiera tylko kody ASCII, które można wydrukować. W drugim przypadku lista zawiera kod 7, który nie jest możliwy do wydrukowania, więc Erlang jest zmuszony zinterpretować go jako listę całkowitą.

Zawsze możesz wydrukować rzeczywistą listę całkowitą za pomocą

<code>MyList = lists:dropwhile(fun(X) -> X < 8 end, lists:seq(1,10)),
io:format("~w", [MyList]).
</code>
dzięki za wyjaśnienie, to wyjaśniałoby dlaczego[68, 97, 121, 97]. jest Daya Daya Sharma
przepraszam, wciąż jestem nowy na stronie, nie chciałem zignorować twojej odpowiedzi. To rozwiązuje moje pytanie. Daya Sharma
Nie martw się o to. Cieszę się, że mogłem pomóc. :) 3lectrologos

Powiązane pytania