How can I return something early from a block?
In this instance, you can use break to terminate the loop early:
collection.each do |i|
break if i == 3
...many lines
end
...of course, this is assuming that you're not actually looking to return a value, just break out of the block.
#!/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}"
next
inside a block returns from the block. break
inside a block returns from the function that yielded to the block. For each
this means that break
exits the loop and next
jumps to the next iteration of the loop (thus the names). You can return values with next value
and break value
.