Bud*_*Joe 39 ruby iterator loops enumerator
码:
c = 0
items.each { |i|
puts i.to_s
# if c > 9 escape the each iteration early - and do not repeat
c++
}
Run Code Online (Sandbox Code Playgroud)
我想抓住前10个项目,然后离开"每个"循环.
我该如何用?替换注释行?有更好的方法吗?更多Ruby惯用的东西?
nim*_*odm 60
虽然break
解决方案有效,但我认为更实用的方法确实适合这个问题.你想要take
前10个元素并打印它们,所以试试
items.take(10).each { |i| puts i.to_s }
Run Code Online (Sandbox Code Playgroud)
Sar*_*els 47
++
Ruby中没有运算符.使用do
和end
用于多行块也是惯例.修改您的解决方案会产生:
c = 0
items.each do |i|
puts i.to_s
break if c > 9
c += 1
end
Run Code Online (Sandbox Code Playgroud)
或者:
items.each_with_index do |i, c|
puts i.to_s
break if c > 9
end
Run Code Online (Sandbox Code Playgroud)
见each_with_index
也编程红宝石休息,重做,和下一步.
更新: Chuck对范围的回答更像Ruby,而nimrodm使用的答案take
更好.
break
适用于从循环中提早逃避,但它更具惯用性items[0..9].each {|i| puts i}
.(如果您所做的只是字面上打印完全没有变化的项目,您可以这样做puts items[0..9]
.)