ハッシュの定義
ハッシュは{}
で囲み、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] |