2

基本上我正在使用二维矩阵。我可以通过指定 (x,y) 对来访问矩阵的元素,以获取该位置的相应值。

现在我还希望能够跟踪在运行时任意确定的某些对。例如,也许我需要跟踪 (1,2)、(3,4) 和 (5,6) 处的值,并且可能需要经常检索该位置的值。

所以我在想如何做一个 hash 。

like_elements = {[1,2] => M[1,2], [3,4] =>M[3,4], [5,6]=>M[5,6]}

或类似的东西。

然后我可以快速迭代哈希并获得我喜欢的元素。

使用数组作为哈希键有什么问题吗?

4

3 回答 3

5

只是不要在之后修改数组(或者如果你这样做,请记住重新散列哈希)。

于 2012-05-16T18:43:14.447 回答
3

如果它真的是一个矩阵(数组的数组),那么你可以像这样传入坐标

matrix = [[:a, :b, :c],[:d, :e, :f], [:g, :h, :i]]
matrix[0][1] # returns :b
matrix[1][2] # returns :f
matrix[2][3] # returns nil, since 3 is out of bounds

是的,您可以创建一个数组作为哈希键。

h = Hash[[0,1], matrix[0][1]]
h[[0,1]] # returns :b
于 2012-05-16T22:01:57.163 回答
0

我目前正在制作一个二维数组,其中每个数组都指向一个特定的哈希映射。每个地图都有自己的特定数据,我想检索键和值信息。但是,当我引用一个数组(即 A[0][1] 时,我无法访问散列函数。

我使用 A.class 检查了类类型,以验证它是一个 Hash 并且确实是它返回的内容。这是 Ruby 1.9.3 的固有问题还是我做错了什么?

于 2015-02-10T02:28:23.740 回答