如果我想做这样的事情:
collection.each do |i|
return nil if i == 3
..many lines of code here..
end
Run Code Online (Sandbox Code Playgroud)
我怎么会得到这种效果?我知道我可以在一个大的if语句中将所有内容包装在块中,但是如果可能的话我想避免嵌套.
休息就不会在这里工作,因为我不希望停止其余元素的迭代.
sep*_*p2k 160
next块内部从块返回.break块内部从返回块的函数返回.对于each这意味着break退出循环并next跳转到循环(因此名称)的下一次迭代.您可以使用next value和返回值break value.
JD.*_*JD. 10
#!/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}"
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您可以使用break来提前终止循环:
collection.each do |i|
break if i == 3
...many lines
end
Run Code Online (Sandbox Code Playgroud)
...当然,这假设你实际上并没有想要返回一个值,只是突破了一个块.
| 归档时间: |
|
| 查看次数: |
26327 次 |
| 最近记录: |