2012-04-06 14 views
6

Per favore qualcuno può aiutarmi a capire cosa sta succedendo quiliste Erlang: dropwhile risultato strano

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 

risposta

13

I risultati sono in realtà corretta in entrambi i casi. La stringa inaspettata nel primo caso è dovuta al fatto che nelle stringhe di Erlang ci sono solo elenchi di numeri interi. Pertanto, Erlang sceglie di interpretare il tuo primo elenco come una stringa, poiché contiene solo codici ASCII stampabili. Nel secondo caso la lista contiene il codice 7, che non è stampabile, quindi Erlang è costretto a interpretarlo come un elenco intero.

È sempre possibile stampare l'elenco intero reale utilizzando

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

grazie per la spiegazione, che spiegherebbe il motivo per cui questo '[68, 97, 121, 97] .' è Daya –

+0

spiacente io sono ancora nuovo al sito non significava ignorare la tua risposta. Risolve la mia domanda. –

+0

Non preoccuparti. Sono contento di poterti aiutare. :) – 3lectrologos

Problemi correlati