2012-04-06 4 views
6

może ktoś mi pomóc zrozumieć, co się dzieje tutajlisty Erlang: dropwhile wyniku dziwnej

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 

Odpowiedz

13

Twoje wyniki są rzeczywiście poprawne w obu przypadkach. Nieoczekiwany ciąg w pierwszym przypadku wynika z faktu, że w ciągach Erlanga są to po prostu listy liczb całkowitych. Dlatego Erlang wybiera pierwszą listę jako ciąg znaków, ponieważ zawiera tylko drukowane kody ASCII. W drugim przypadku lista zawiera kod 7, który nie jest drukowany, więc Erlang jest zmuszony interpretować go jako listę całkowitą.

zawsze można wydrukować aktualnej liście całkowitą za pomocą

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

dzięki za wyjaśnienie, które mogłyby wyjaśnić, dlaczego to '[68, 97, 121, 97] .' jest Daya –

+0

Niestety wciąż jestem nowy na stronie nie znaczyło zignorować twojej odpowiedzi. To rozwiązuje moje pytanie. –

+0

Nie martw się o to. Cieszę się, że mogłem pomóc. :) – 3lectrologos