Array

Ciao a tutti, vi posto un problema sperando nel vostro gentile aiuto;

ho un array in cui devo aggiungere elementi dinamicamente in modo che
raggiunga il formato:

rowtograph[0] = 1 , 5 , 8 , 0
rowtograph[1] = 5 , 2 , 4 , 0

e così via…

nessun problema definendolo così come l’ho scritto sopra, il problema
nasce volendolo costruire dinamicamente in questo modo:

rowtograph = []

for nuovoelemento in 0…5
for elemento in 0…5
rowtograph[elemento] << aggiunta[nuovoelemento]
end
end

nelle mie intenzioni questo dovrebbe costruire l’array desiderato, in
realtà produce il seguente errore:

NoMethodError (You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.<<)

grazie sin d’ora a chi vorrà aiutarmi

Stefano

Forse intendi fare cosi?

rowtograph = []

for elemento in 0…5
rowtograph << aggiunta[elemento]
end

ma ci sono modi migliori in ruby per appendere un array ad un altro
array

On May 15, 2008, at 11:43 AM, Stefano B. wrote:

nessun problema definendolo così come l’ho scritto sopra, il problema
nelle mie intenzioni questo dovrebbe costruire l’array desiderato, in
realtà produce il seguente errore:

NoMethodError (You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.<<)

Ti serve che rowtograph[elemento] abbia come valore iniziale un array
vuoto, ma non
lo inizializzi da nessuna parte. Puoi fare in 2 modi:

rowtograph = []
for nuovoelemento in 0…5
for elemento in 0…5
(rowtograph[elemento] ||= []) << aggiunta[nuovoelemento]
end
end

oppure, visto che la dimensione di rowtograph e’ nota:

rowtograph = Array.new(5) { Array.new }
e il resto non cambia

S.

Claudio Petasecca D. wrote:

Forse intendi fare cosi?

rowtograph = []

for elemento in 0…5
rowtograph << aggiunta[elemento]
end

Ciao Claudio, grazie della tua risposta;

facendo come dici tu ogni elemento di rowtograph corrisponde ad un
elemento di aggiunta, invece a me serve che ogni elemento di rowtograph
contenga più elementi di aggiunta, ad es.

rowtograph[0] = 1 , 5 , 8 , 0
rowtograph[1] = 5 , 2 , 4 , 0

cosa che mi riesce se definisco gli elementi staticamente (come
nell’esempio) ma non mi riesce se cerco di farlo dinamicamente.

Che ne dici?

Stefano C. wrote:

On May 15, 2008, at 11:43 AM, Stefano B. wrote:

nessun problema definendolo cos� come l’ho scritto sopra, il problema
nelle mie intenzioni questo dovrebbe costruire l’array desiderato, in
realt� produce il seguente errore:

NoMethodError (You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.<<)

Ti serve che rowtograph[elemento] abbia come valore iniziale un array
vuoto, ma non
lo inizializzi da nessuna parte. Puoi fare in 2 modi:

rowtograph = []
for nuovoelemento in 0…5
for elemento in 0…5
(rowtograph[elemento] ||= []) << aggiunta[nuovoelemento]
end
end

oppure, visto che la dimensione di rowtograph e’ nota:

rowtograph = Array.new(5) { Array.new }
e il resto non cambia

S.

Grazie mille Stefano!

provo subito il tuo suggerimento e ti faccio sapere.

Stefano

Stefano B. wrote:

Stefano C. wrote:

On May 15, 2008, at 11:43 AM, Stefano B. wrote:

Ti serve che rowtograph[elemento] abbia come valore iniziale un array
vuoto, ma non
lo inizializzi da nessuna parte. Puoi fare in 2 modi:

rowtograph = []
for nuovoelemento in 0…5
for elemento in 0…5
(rowtograph[elemento] ||= []) << aggiunta[nuovoelemento]
end
end

oppure, visto che la dimensione di rowtograph e’ nota:

rowtograph = Array.new(5) { Array.new }
e il resto non cambia

S.

funziona perfettamente!

tutto risolto, grazie!

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs