Si quisiera hacer algo como esto:
collection.each do |i|
return nil if i == 3
..many lines of code here..
end
¿Cómo obtendría ese efecto? Sé que podría envolver todo dentro del bloque en una gran declaración if, pero me gustaría evitar el anidamiento si es posible.
Break no funcionaría aquí, porque no quiero detener la iteración de los elementos restantes.

next valueybreak value. Exactamente lo que estaba buscando.break valueno funcionó para mí, aunquenext valuefuncionó bien. Muchas gracias.nextybreakde ninguna manera son específicos de las construcciones de bucle, por lo que el artículo que vinculó es muy engañoso (ya que implica en gran medida lo contrario). Y mis descripciones son definitivamente correctas cuandonextybreakse usan dentro de bloques (tenga en cuenta quewhileyforrara vez, si alguna vez, se usan en Ruby, por lo que el 99% de los usos denextybreakestán dentro de bloques).#!/usr/bin/ruby collection = [1, 2, 3, 4, 5 ] stopped_at = collection.each do |i| break i if i == 3 puts "Processed #{i}" end puts "Stopped at and did not process #{stopped_at}"fuente
En este caso, puede usar break para terminar el ciclo antes:
collection.each do |i| break if i == 3 ...many lines end... por supuesto, esto supone que en realidad no está buscando devolver un valor, simplemente salga del bloque.
fuente
breaken Ruby -break 5haráeachque se devuelva 5.