基本上我正在使用2D矩阵。我可以通过指定(x,y)对来获取矩阵的元素,以获得该位置的相应值。
现在我还希望能够跟踪在运行时任意确定的某些对。例如,我可能需要跟踪(1,2),(3,4)和(5,6)的值,也许我需要经常检索该位置的值。
所以我在考虑如何制作哈希。
liked_elements = {[1,2] => M[1,2], [3,4] =>M[3,4], [5,6]=>M[5,6]}
或类似的东西。
然后我可以快速迭代哈希并获得我喜欢的元素。
使用数组作为哈希键是否存在任何问题?
答案 0 :(得分:5)
之后不要修改数组(或者如果你这样做,请记得重新散列哈希)。
答案 1 :(得分: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
答案 2 :(得分:0)
我目前正在制作一个二维数组,其中每个数组都指向一个特定的哈希映射。每个地图都有自己的特定数据,我想检索密钥和值信息。但是,当我引用一个数组(即A [0] [1]时,我无法访问哈希函数。
我通过使用A.class检查类类型来验证它是一个Hash,实际上它就是它返回的内容。这是Ruby 1.9.3的固有问题还是我做错了什么?