loop for array ruby loops syntax iteration

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í:

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.