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]]=@nome_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]]=@nome_orari[el[0]][i]
potete spiegarmelo in parole povere?
Grazie mille a tutti!
on 23.07.2008 16:08
on 24.07.2008 00:03
Njna Njna 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]]=@nome_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]]=@nome_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]=@nome_orari[nome][i] end end end end Inoltre ti consiglierei un "return partenze" alla fine del metodo, sennò non avrebbe utilità.
on 24.07.2008 09:16
Grazie ma non ho ancora capito il significato della quadre.. cosa vuol dire questo? partenze[nome]=@nome_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]=@nome_orari[nome][i] > end > end > end > end > > Inoltre ti consiglierei un "return partenze" alla fine del metodo, sennò > non avrebbe utilità.
on 24.07.2008 10:36
Njna Njna wrote: > Grazie ma non ho ancora capito il significato della quadre.. > > cosa vuol dire questo? > partenze[nome]=@nome_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]=@nome_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]