在ruby中从数组中创建键/值散列

在ruby中从数组中创建键/值散列,ruby,arrays,data-structures,hash,Ruby,Arrays,Data Structures,Hash,我遇到了一段旧代码,它使用ruby中的简单数组创建哈希数据类型。我得到了大部分,除了一部分: 我的理解是,@store的每个元素都是特定键/值对的内存位置,作为键的函数。所以@store[3]通常会存储与key=3、key=53、。。。通常,其中键%size==3(在本例中,size=50) 但是,当我设置散列[3]=7,散列[53]=9等时,@store数组的每个元素都填充了键/值对,而不仅仅是索引3元素。看起来像是一行@store[store_key]虽然你的问题有点不清楚,但我能猜出问题出

我遇到了一段旧代码,它使用ruby中的简单数组创建哈希数据类型。我得到了大部分,除了一部分:

我的理解是,
@store
的每个元素都是特定键/值对的内存位置,作为键的函数。所以
@store[3]
通常会存储与key=3、key=53、。。。通常,其中
键%size==3
(在本例中,size=50)


但是,当我设置
散列[3]=7
散列[53]=9
等时,
@store
数组的每个元素都填充了键/值对,而不仅仅是索引3元素。看起来像是一行
@store[store_key]虽然你的问题有点不清楚,但我能猜出问题出在哪里

@store = Array.new(size, [])
这将创建一个大小合适的数组,但每个元素都是相同的对象

在任何位置更改数组中的数组,更改将在每个位置都很明显

试试看

@store = Array.new
size.times { @store << [] }
你可以简单地做到这一点

@store = Array.new(size){ [] }

每个元素都是一个单独的数组。

必须编辑此数组,抱歉!我最初的解决方案不起作用:/这是非常不习惯的。惯用的方法是使用中的块形式。
@store = Array.new(size){ [] }
@store = Array.new(size){ [] }