array - for ruby
En Ruby, ¿cómo puedo omitir un bucle en un bucle.each, similar a ''continuar'' (2)
Esta pregunta ya tiene una respuesta aquí:
- Equivalente de "continuar" en Ruby 6 respuestas
En Ruby, ¿cómo me salto un bucle en un bucle .each , similar a continue en otros idiomas?
Use next :
(1..10).each do |a|
next if a.even?
puts a
end
huellas dactilares:
1
3
5
7
9
Para más frialdad revisa también redo y retry .
Funciona también para amigos como times , upto , downto , each_with_index , select , map y otros iteradores (y más generalmente bloques).
Para obtener más información, consulte http://ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html#UL .
next , es como return , pero para bloques! (Así que puedes usar esto en cualquier proc / lambda también).
Eso significa que también puede decir next n para "return" n del bloque. Por ejemplo:
puts [1, 2, 3].map do |e|
next 42 if e == 2
e
end.inject(&:+)
Esto rendirá 46 .
Tenga en cuenta que el return siempre se devuelve desde la def más cercana, y nunca un bloque; Si no hay una def envolvente, el return es un error.
Usar el return desde dentro de un bloque intencionalmente puede ser confuso. Por ejemplo:
def my_fun
[1, 2, 3].map do |e|
return "Hello." if e == 2
e
end
end
my_fun dará como resultado "Hello." , no [1, "Hello.", 2] , porque la palabra clave return pertenece a la def externa, no al bloque interno.