Diverso comportamento del metodo map tra ruby 1.8 e ruby 1.9

Il seguente codice:

= render :text => @viario.map {|it| “#{it}\n”}

in ruby 1.8 mi visualizzava il contenuto dell’array andando a capo ad
ogni nuovo valore.
Lo stesso codice con ruby 1.9 visualizza tutto in un’unica riga :frowning:
Perche’ non riconosce il carattere di newline?

Il seguente codice:

= render :text => @viario.map {|it| “#{it}\n”}

in ruby 1.8 mi visualizzava il contenuto dell’array andando a capo ad
ogni nuovo valore.
Lo stesso codice con ruby 1.9 visualizza tutto in un’unica riga :frowning:
Perche’ non riconosce il carattere di newline?

Non so, ma potrebbe essere una soluzione usare un ‘join’?

@viario.join(“\n”)


David N. Welton

http://www.welton.it/davidw/

http://www.dedasys.com/

questo funziona

= render :text => @viario.map {|it| it}.join("\n")

grazie mille.

2012/1/10 David W. [email protected]

@viario.join(“\n”)

Credo sia perch @viario.map {|it| “#{it}\n”} un array di stringhe, non
una stringa sola. userei anche io una join questo caso. in casistiche pi
generali dove devi ridurre una lista a un valore la funzione da usare
reduce/inject.

Ciao
Stefano

a occhio, dovrebbe funzionare anche cos:

@viario.join("\n")

ciao,
A.

irb>%w[1 2 3 4 5 6].map{|it| it}.join("\n")
=> “1\n2\n3\n4\n5\n6”

non capisce il “\n”

Il metodo map non mi risulta ma è sicuramente cambiato il metodo to_s
degli array che in ruby 1.9 non è più un semplice concatenamento di
valori

1.8.7
irb(main):004:0> [1, 2, 3].to_s
=> “123”

1.9.x
irb(main):003:0> [1, 2, 3].to_s
=> “[1, 2, 3]”

Probabilmente hai riscontrato la differenza perchè ottenevi una
conversione implicita es. quando inserisci un valore in una stringa con
#{} viene sempre prima convertito in stringa

2012/1/10 Andrea P. [email protected]:

a occhio, dovrebbe funzionare anche cos:

@viario.join(“\n”)

Si esatto, hai ragione.