1.創建哈希:就像創建數組一樣,我們可以通過Hash類來創建一個Hash實例:
h1 = Hash.new #默認值為nilh2 = Hash.new(“This is my first hash instance”) #默認值為” This is my first hash instance”:
上面兩個例子都創建了一個空的Hash實例。一個Hash對象總是有一個默認的值——因為如果在一個Hash對象里沒有找到指定的索引(key),將會返回默認值。
創建了Hash對象后,我們就可以像數組那樣給他添加/刪除項了。唯一不同的是,在數組中的索引只是能整數,而在Hash中索引(key)可以是任何類型(any type of object)且唯一的數據:
h2["one"] = "北京"h2["two"] = "上海"h2["three"] = "深圳"h2["four"] = "廣州"
Note: 如果在給Hash賦值時,使用的相同的key,那么后面的值會覆蓋掉前面的值。另外,Ruby還提供了一種方便的創建和初始化Hash的方法,只需要在key后面加一個=>符號并跟一個值即可。每個key-value對用逗號隔開。然后整體用大括號括起來:
h2 = {"one" => "北京","two" =>"上海","three" =>"深圳","four" =>"廣州" }
2.通過索引存取Hash的值:
要想獲取某個值,可以用下面的方法:
puts h2[“one”] #=>”北京”
如果指定的key不存在,將返回默認的值(前面有提到過)。此外,我們還可以用default方法獲取默認值,用default+=方法設置默認值
puts h1.default h1.default += “This is set value method”
3.復制Hash:
和數組一樣,我們可以把一個Hash變量分配給另一個hash變量,它們都引用想同的Hash,所以如果其中一個的值變了,那么另外一個的值也會跟著變:
h3 = h2 h3[“one”] = “西安” puts h h2[“one”] #=>”西安”
有的時候我們不希望上面的情況發生,即:修改了其中一個的值另一個也跟著修改了,我們可以使用clone方法make a new copy
h4 = h2.clone h4[“one”] = “大連” puts h2[“one”] #=>”西安”(i.e. 值沒有修改)
4.Hash排序:
當我們需要對Hash進行排序時,不能像數組那樣簡單的使用sort方法,因為數組中的數據類型都是一樣的(整型),Hash中的數據類型可能并不完全一樣,如整數類型和字符串類型就沒法一起排序,此時就需要我們進行處理,如下(如果Hash中的數據類型全部相同可以不進行如下處理):
def sorted_hash(aHash) return aHash.sort{ |a,b| a.to_s <=> b.to_s } Endh1 = {1=>'one', 2=>'two', 3=> 'three'}h2 = {6=>'six', 5=>'five', 4=> 'four'}h3 = {'one'=>'A', 'two'=>'B','three'=>'C'}h4 = h1.merge(h2) #合并hashh5 = h1.merge(h3)def sorted_hash(aHash) return aHash.sort{|a,b| a.to_s <=> b.to_s }endp(h4) p(h4.sort)p(h5)p(sorted_hash(h5))
新聞熱點
疑難解答