我在我的个人项目中有以下代码:
def allocate(var, value) # Allocate the variable to the next available spot.
@storage.each do |mem_loc|
if mem_loc.free?
mem_loc.set(var, value) # Set it then break out of the loop.
break
end
end
end
存储数组中的每个项目都是一个对象,它响应free?和set方法。我想做的是循环遍历数组,查找下一个空闲对象以设置变量。我的问题是,这只是循环遍历所有对象并将它们全部设置。我是否不正确地使用了break函数?
测试它,我调用以下内容:
store.allocate(:a, 10)
store.allocate(:b, 20)
所以store[1]应该被设置为:b和20。但是当我输出内容时,它的值是10,数组中其余部分也是如此。
nums.each {|x| if (x % 2 == 0) then puts "#{x} 是偶数"; break; end }
在 Ruby 1.8.7 上运行良好。 - Telemachusfree?
测试并被设置,但是each
循环从未中断?是这样吗? - Telemachus@storage.find(&:free?).set(var,value)
- Lars Haugseth