为什么这个Ruby每个循环都不会中断?

我在我的一个个人项目中有以下代码:

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

存储阵列中的每个项目都是一个响应免费的对象?并设定.我想要做的是遍历数组,寻找下一个空闲(空)对象来设置变量.我的问题是,这只是遍历每个对象并将它们全部设置.我是否错误地使用了break函数?
测试它,我打电话给以下:

store.allocate(:a, 10)
store.allocate(:b, 20)

因此store [1]应该设置为:b和20.但是当我输出内容时,它的值是10,就像数组的其余部分一样.

最佳答案 我相信我发现了这个错误,实际上并没有在上面的代码中.

当我设置存储阵列时,我确实喜欢这样:

@storage = [Memory_location.new] * 1000

相信它会创造1000个不同的对象.我认为实际发生的是,它创建了1000个对同一个对象的引用,所以当我改变其中一个时,我改变了所有这些.我可以通过在两个不同的数组位置使用puts方法来证明这一点,它们都返回:

#{Memory_location:0x2bc8b74}
点赞