Valore di un hash.. mi sono persa

ciao a tutti…
ho questo codice:

def stampa_partenze(stazione)
partenze={}
for el in @nome_citta
for i in 0…el[1].length-1
if el[1][i]==stazione
partenze[el[0]][email protected]_orari[el[0]][i]
end
end
end
end

dove @nome_citta è un hash avete come chiave il nome di un treno e come
valore un elenco di cittÃ

@nome_citta[nome_treno]=lista_fermate

non riesco assolutamente a capire tutte quelle parentesi quadre di
stampa_partenze…

el[1][i]
cosa vuol dire?
e anche questo:
partenze[el[0]][email protected]_orari[el[0]][i]

potete spiegarmelo in parole povere?
Grazie mille a tutti!

Njna N. wrote:

ciao a tutti…
ho questo codice:

def stampa_partenze(stazione)
partenze={}
for el in @nome_citta
for i in 0…el[1].length-1
if el[1][i]==stazione
partenze[el[0]][email protected]_orari[el[0]][i]
end
end
end
end

dove @nome_citta è un hash avete come chiave il nome di un treno e come
valore un elenco di cittÃ

@nome_citta[nome_treno]=lista_fermate

non riesco assolutamente a capire tutte quelle parentesi quadre di
stampa_partenze…

el[1][i]
cosa vuol dire?
e anche questo:
partenze[el[0]][email protected]_orari[el[0]][i]

potete spiegarmelo in parole povere?
Grazie mille a tutti!

Per gestire gli hash ti conviene usare each:

hash.each do |chiave, valore|

end

Per gli array puoi sempre fare lo stesso:

array.each do |valore|

end

In questo modo dovrebbe essere tutto più semplice. Con il for nella
variabile hai un array contenente chiave e valore ([chiave,valore]), più
scomodo da decifrare.

Tradotto in linguaggio più semplice, dunque:
def stampa_partenze(stazione)
partenze={}
@nome_citta.each do |nome, elenco|
for i in 0…elenco.length-1
if elenco[i]==stazione
partenze[nome][email protected]_orari[nome][i]
end
end
end
end

Inoltre ti consiglierei un “return partenze” alla fine del metodo, sennò
non avrebbe utilità .

Grazie ma non ho ancora capito il significato della quadre…

cosa vuol dire questo?
partenze[nome][email protected]_orari[nome][i]

Ancora grazie!

Simone Scalabrino wrote:

Per gestire gli hash ti conviene usare each:

hash.each do |chiave, valore|

end

Per gli array puoi sempre fare lo stesso:

array.each do |valore|

end

In questo modo dovrebbe essere tutto più semplice. Con il for nella
variabile hai un array contenente chiave e valore ([chiave,valore]), più
scomodo da decifrare.

Tradotto in linguaggio più semplice, dunque:
def stampa_partenze(stazione)
partenze={}
@nome_citta.each do |nome, elenco|
for i in 0…elenco.length-1
if elenco[i]==stazione
partenze[nome][email protected]_orari[nome][i]
end
end
end
end

Inoltre ti consiglierei un “return partenze” alla fine del metodo, sennò
non avrebbe utilità .

Njna N. wrote:

Grazie ma non ho ancora capito il significato della quadre…

cosa vuol dire questo?
partenze[nome][email protected]_orari[nome][i]

Ancora grazie!

Simone Scalabrino wrote:

Per gestire gli hash ti conviene usare each:

hash.each do |chiave, valore|

end

Per gli array puoi sempre fare lo stesso:

array.each do |valore|

end

In questo modo dovrebbe essere tutto più semplice. Con il for nella
variabile hai un array contenente chiave e valore ([chiave,valore]), più
scomodo da decifrare.

Tradotto in linguaggio più semplice, dunque:
def stampa_partenze(stazione)
partenze={}
@nome_citta.each do |nome, elenco|
for i in 0…elenco.length-1
if elenco[i]==stazione
partenze[nome][email protected]_orari[nome][i]
end
end
end
end

Inoltre ti consiglierei un “return partenze” alla fine del metodo, sennò
non avrebbe utilità .

Le quadre servono a richiamare un determinato elemento di un array o un
hash. Ad esempio, in un hash fatto così:
“a”=>“ciao”
“b”=>“prova”
“c”=>“ruby”

se scrivi hash[“a”] avrai come risultato “ciao” etc. Idem per gli array:
0=>“prova”
1=>“vero”
2=>“falso”
con array[1] avrai “vero”.

Per quanto riguarda “@nome_orari”, dev’essere una matrice, formata in
questo modo:

0=>[]
1=>[]
2=>[]

Array di array praticamente. Richiamando l’elemento 0, non otterremo un
numero o una stringa, ma un ulteriore array, da cui possiamo prendere
l’elemento usando ancora le quadre. Ad esempio:

0=>[“uno”,“due”,“tre”]
1=>[“quattro”,“cinque”,“sei”]
2=>[“sette”,“otto”,“nove”]

usando array[1] otterremo [“quattro”,“cinque”,“sei”]. Se a noi serve
“cinque”, possiamo prendere l’elemento “1” (ricorda, gli array partono
da 0), quindi faremo:
array[1][1]