ハッシュの定義
ハッシュは{}で囲み、key => valueをカンマで連ねて定義する。
|
1 |
h = {"one" => 1, "two" => 2, "three" => 3 } |
空のハッシュは次のいずれかで。
|
1 2 |
h = {} h = Hash.new |
ハッシュのサイズ
ハッシュのサイズはsizeかlengthで取得。
|
1 2 3 4 5 6 7 |
h = {"one" => 1, "two" => 2, "three" => 3 } p(h.size) # 3 p(h.length) # 3 |
ハッシュが空かどうかはempty?で確認できる。
|
1 2 3 4 |
h = {} p(h.empty?) # true |
キーと値のリスト
keys、valuesでキーや値のリストが得られる。
|
1 2 3 4 5 6 7 |
h = {"one" => 1, "two" => 2, "three" => 3 } p(h.keys) # ["one", "two", "three"] p(h.values) # [1, 2, 3] |
キーと値の検索
has_key?、has_value?でキーや値の存在を確認。
|
1 2 3 4 5 6 7 |
h = {"one" => 1, "two" => 2, "three" => 3 } p(h.has_key?("two")) # true p(h.has_value?(4)) # false |
値の参照・追加・変更
キーを指定して値を参照。存在しない場合はnil。
|
1 2 3 4 5 6 7 |
h = {"one" => 1, "two" => 2, "three" => 3 } p(h["two"]) # 2 p(h["ten"]) # nil |
新たなキーを指定してアイテムを追加。
|
1 2 3 4 |
h["four"] = 4 p(h) # {"one"=>1, "two"=>2, "three"=>3, "four"=>4} |
キーを指定してアイテムを削除。
|
1 2 3 4 |
h.delete("one") p(h) # {"two"=>2, "three"=>3, "four"=>4} |
キーを指定して値を変更。
|
1 2 3 4 |
h["three"] = "参" p(h) # {"two"=>2, "three"=>"参", "four"=>4} |
キーと値の順次取り出し
eachメソッドでキーと値のセットを順次取り出す。
|
1 2 3 4 5 6 7 8 9 |
h = {"one" => 1, "two" => 2, "three" => 3 } h.each do |key, value| puts("#{key} -> #{value}") end # one -> 1 # two -> 2 # three -> 3 |
シンボルによるキーの設定
:key => valueの形で、キーをシンボルで設定できる。
|
1 2 3 4 5 6 7 |
h = {:one => 1, :two => 2, :three => 3} p(h) # {:one=>1, :two=>2, :three=>3} p(h[:one]) # 1 |
シンボルで設定する場合、key: valueの形でも設定できる。ただし参照する場合は:keyの形で。
|
1 2 3 4 5 6 7 |
h = {one: 1, two: 2, three: 3} puts h # {:one=>1, :two=>2, :three=>3} p(h[:two]) # 2 |
キーのリストもシンボルで表示される。
|
1 2 3 4 |
h = {one: 1, two: 2, three: 3} p(h.keys) # [:one, :two, :three] |