Ruby哈希是唯一鍵及其值的集合。 它們與數(shù)組類似,但數(shù)組只能使用整數(shù)作為索引,哈希使用任何對象類型。 它們也稱為關(guān)聯(lián)數(shù)組,字典或映射。
如果使用不存在的鍵訪問哈希,則將返回nil。
語法
name = {"key1" => "value1", "key2" => "value2", "key3" => "value3"...}
OR
name = {key1: 'value1', key2: 'value2', key3: 'value3'...}
Ruby哈希是通過在{}花括號中編寫鍵值對來創(chuàng)建的。要獲取哈希值,請在[]方括號內(nèi)寫入所需的鍵名稱。
示例
#!/usr/bin/ruby
# file : hashes-create.rb
color = {
"Rose" => "red",
"Lily" => "purple",
"Marigold" => "yellow",
"Jasmine" => "white"
}
puts color['Rose']
puts color['Lily']
puts color['Marigold']
puts color['Jasmine']
執(zhí)行上面示例代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby hashes-create.rb
red
purple
yellow
white
F:\worksp\ruby>
可以通過在已存在的哈希中添加或刪除鍵值對來修改Ruby哈希。
示例
#!/usr/bin/ruby
# file : hashes-modify.rb
color = {
"Rose" => "red",
"Lily" => "purple",
"Marigold" => "yellow",
"Jasmine" => "white"
}
color['Tulip'] = "pink"
color.each do |key, value|
puts "#{key} color is #{value}"
end
執(zhí)行上面示例代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby hashes-modify.rb
Rose color is red
Lily color is purple
Marigold color is yellow
Jasmine color is white
Tulip color is pink
F:\worksp\ruby>
Ruby哈希有很多方法。 一些是公共類方法和一些公共實(shí)例方法。
公共類方法
| 方法 | 描述 |
|---|---|
| Hash[object] | 用給定的對象創(chuàng)建一個新的哈希。 |
| new(obj) | 返回一個新的空哈希。 |
| try_convert(obj) | 嘗試將obj轉(zhuǎn)換為哈希。 |
| 方法 | 描述 |
|---|---|
| hsh==other_hash | 如果它們包含相同的鍵和值對,則兩個哈希值相等。 |
| hsh[key] | 從相應(yīng)的鍵取回值。 |
| hsh[key] = value | 將新值與給定鍵相關(guān)聯(lián)(賦值) |
| assoc(obj) | 在哈希中比較obj。 |
| clear | 從哈希中刪除所有鍵值對或是清空所有數(shù)據(jù)。 |
| compare_by_identity | 按其標(biāo)識比較哈希鍵。 |
| compare_by_identity? | 如果哈希通過其標(biāo)識比較其鍵,則返回true。 |
| default(key=nil) | 返回默認(rèn)值 |
| default = obj | 設(shè)置默認(rèn)值 |
| delete(key) | 刪除鍵值對 |
| each | 在哈希中為每個鍵調(diào)用一次 |
| empty? | 如果哈希不包含鍵值對,則返回true。 |
| eql>(other) | 如果哈希和其他兩者都具有相同的內(nèi)容,則返回true |
| fetch(key[, default]) | 從給定鍵返回哈希值。 |
| flatten | 返回一個新的數(shù)組,這是這個哈希的一維平坦化數(shù)據(jù)值。 |
| has_key?(key) | 如果哈希中存在給定鍵,則返回true。 |
| has_value?(value) | 如果給定的值存在于哈希中,則返回true。 |
| include?(key) | 如果哈希中存在給定鍵,則返回true。 |
| to_s/ inspect | 將哈希的內(nèi)容轉(zhuǎn)為字符串返回。 |