¿Cómo configuro un desplazamiento inicial para each
loop en ruby? Quiero que el ciclo comience desde a[3]
en lugar de a[0]
. ¿Cómo configuro eso?Ruby: cada desplazamiento inicial
a = [ab, cd, ef, gh, hi, jk]
a.each do |i|
#some stuff
end
¿Cómo configuro un desplazamiento inicial para each
loop en ruby? Quiero que el ciclo comience desde a[3]
en lugar de a[0]
. ¿Cómo configuro eso?Ruby: cada desplazamiento inicial
a = [ab, cd, ef, gh, hi, jk]
a.each do |i|
#some stuff
end
Otro, posibilidad posiblemente más directa y legible es usar Array#drop
:
a.drop(3).each do |i|
# do something with item i
end
Ahora esto realmente brilla si se combina con otros métodos heredados de Enumerable
, por lo que es probable que exista una mejor alternativa a su imperativo each
bucle. Digamos que usted quiere filtrar el corte extraído y transformarla después:
a = [0,1,2,3,4,5,6,7]
a.drop(3).select(&:even?).map { |x| x * 2 }
# => [8, 12]
O supongamos que desea imprimir una lista de todos los valores:
a = ["1", "2", "3", "4", "5"]
puts a.drop(3).join("\n")
Salida:
4
5
Estos características heredadas de la programación funcional son las que hacen que Ruby sea tan fuerte :)
Uso each
en un subpart de la matriz. En el siguiente ejemplo, a partir del cuarto elemento al final:
a[3..-1].each do |i|
#some stuff
end
a [a.size - 1] .each do | i | – JohnMerlino
Esto le ayudará de
a[3..-1].each do |i|
#your logic
end
más Rubyist olvidar el buen viejo de bucle:
n = 3
for i in n...a.size
puts a[i]
end
Porque es una mierda, ya que no introduce un nuevo ámbito, que es contrario a la intuición, ya que utiliza 'do/end'. Además, OP quería enumerar los elementos de la matriz, no los índices. –
¿Eh? ¿Cada uno también usa do/end? Si desea un nuevo alcance, no use el cierre de proc, use una llamada a un método dentro del ciclo. Si hay una diferencia principial entre for y each en cuanto a su bloque de código, me gustaría saberlo (también infrautilizo los bucles :) –
De todos modos, agregué un [i] en lugar de i al código, Gracias. –
¿Qué lenguajes de programación funcionales influyeron en este estilo de programación? – Vass
@Vass En LISP y luego Haskell, que dependen en gran medida de las listas persistentes vinculadas individualmente, este estilo es bastante común (por ejemplo, encontrarás allí las funciones clásicas 'map',' filter', 'take',' drop', 'zip' etc. que también encontrará en el módulo 'Enumerable' de Ruby) –
Sería bueno ver una variedad de estos métodos como drop, mientras implementa la búsqueda binaria o algún otro algoritmo de clasificación – Donato