Come impostare un offset iniziale per il ciclo each
in rubino? Voglio che il ciclo inizi da a[3]
anziché a[0]
. Come posso impostarlo?Ruby - ogni offset iniziale
a = [ab, cd, ef, gh, hi, jk]
a.each do |i|
#some stuff
end
Come impostare un offset iniziale per il ciclo each
in rubino? Voglio che il ciclo inizi da a[3]
anziché a[0]
. Come posso impostarlo?Ruby - ogni offset iniziale
a = [ab, cd, ef, gh, hi, jk]
a.each do |i|
#some stuff
end
altro, possibilmente possibilità più diretta e leggibile è quella di utilizzare Array#drop
:
a.drop(3).each do |i|
# do something with item i
end
Ora questo brilla davvero se combinato con altri metodi ereditati da Enumerable
, quindi è probabile che ci sia un'alternativa migliore al tuo imperativo ciclo each
. Dire che si desidera filtrare la fetta estratto e trasformarlo in seguito:
a = [0,1,2,3,4,5,6,7]
a.drop(3).select(&:even?).map { |x| x * 2 }
# => [8, 12]
o dire che si desidera stampare un elenco di tutti i valori:
a = ["1", "2", "3", "4", "5"]
puts a.drop(3).join("\n")
uscita:
4
5
Questi le caratteristiche ereditate dalla programmazione funzionale sono ciò che rende Ruby così forte :)
Uso each
su una subpart della matrice. Nell'esempio riportato di seguito, a partire dal quarto elemento alla fine:
a[3..-1].each do |i|
#some stuff
end
a [a.size - 1] .each do | i | – JohnMerlino
Questo vi aiuterà di
a[3..-1].each do |i|
#your logic
end
La maggior parte Rubyist dimenticare il buon vecchio ciclo for:
n = 3
for i in n...a.size
puts a[i]
end
Perché fa schifo, in quanto non introduce un nuovo ambito, che è contro-intuitivo in quanto utilizza 'do/end'. Inoltre, OP voleva elencare gli elementi dell'array, non gli indici. –
Eh? Ognuno usa anche do/end? Se si desidera un nuovo ambito, non utilizzare la chiusura del processo, utilizzare una chiamata al metodo all'interno del ciclo. Se c'è una differenza principale tra e per quanto riguarda il loro blocco di codice, mi piacerebbe saperlo (anche io sottovaluto per i loop :) –
In ogni caso, ho aggiunto un [i] invece di i al codice, grazie. –
Quali linguaggi di programmazione funzionali hanno influenzato questo stile di programmazione? – Vass
@Vass In LISP e in seguito in Haskell che fanno molto affidamento su liste permanenti collegate singolarmente, questo stile è piuttosto comune (ad esempio troverete le classiche funzioni 'map',' filter', 'take',' drop', 'zip' ecc. che si trova anche nel modulo 'Enumerable' di Ruby) –
Sarebbe bello vedere una varietà di questi metodi come drop, mentre si implementa la ricerca binaria o qualche altro algoritmo di ordinamento – Donato