如果我想要做這樣的事情:如何從一個區塊提前返回某些內容?
collection.each do |i|
return nil if i == 3
..many lines of code here..
end
我怎麼會得到這種效果?我知道我可以在一個大的if語句中將所有內容都包裹起來,但是如果可能的話我想避免嵌套。
休息不會在這裏工作,因爲我做不是想停止迭代其餘元素。
如果我想要做這樣的事情:如何從一個區塊提前返回某些內容?
collection.each do |i|
return nil if i == 3
..many lines of code here..
end
我怎麼會得到這種效果?我知道我可以在一個大的if語句中將所有內容都包裹起來,但是如果可能的話我想避免嵌套。
休息不會在這裏工作,因爲我做不是想停止迭代其餘元素。
next
塊內返回塊。 break
塊內返回從塊產生的功能。對於each
這意味着break
退出循環,並且next
跳轉到循環的下一個迭代(因此名稱)。您可以使用next value
和break value
返回值。
在這種情況下,你可以使用break來終止循環早期:
collection.each do |i|
break if i == 3
...many lines
end
......當然,這是假設你沒有真正打算返回一個值,只是打出來的該塊。
#!/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}"
謝謝@jd,在減少方面效果很好。 – Joe 2017-07-26 16:06:31
'next'是我一直在尋找的,謝謝。 – ryeguy 2010-03-25 18:39:42
用於「下一個值」和「中斷值」。正是我在找什麼。 – 2012-11-30 20:41:47
'break value'對我不起作用,而'next value'工作正常。非常感謝。 – 2013-09-21 15:10:30