2012-05-16 142 views
2

基本上我正在使用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]} 

或類似的東西。

然後我可以快速迭代散列並獲取我喜歡的元素。

使用數組作爲散列鍵是否存在任何問題?

回答

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 
5

只是不要修改數組之後(或者記得重新哈希散列,如果你這樣做)。

0

我目前正在製作一個二維數組,其中每個數組指向一個特定的哈希映射。每張地圖都有自己的特定數據,我想檢索關鍵字和價值信息。然而,當我參考一個數組(即A [0] [1])時,我無法訪問哈希函數

我使用A.class檢查了類的類型,以確認它是一個哈希值, 。這是Ruby 1.9.3的固有問題,還是我做錯了?