Hash とは?
Hash オブジェクトとは key と value の組み合わせでデータを表現できるオブジェクトのことです。
Hash の書き方
Hash は中括弧とコロンを用いて作成します。
irb(main):082:0> user = { name: 'Masuyama' }
=> {:name=>"Masuyama"}
Hash 値の取り出し型
先ほどのようなコロンを用いた記法の場合、key は symbol オブジェクトとなっているので
hash オブジェクトで symbol を指定することで対応する値 (value) を取り出すことができます。
irb(main):083:0> user[:name]
=> "Masuyama"
Hash の書き換え
特定の key を指定して値を代入することで、値を書き換えることもできます。
irb(main):095:0> user = { name: 'Masuyama' }
=> {:name=>"Masuyama"}
irb(main):096:0> user[:name] = 'Yamada'
=> "Yamada"
irb(main):097:0> user[:name]
=> "Yamada"
key の一覧を取得
keys メソッドを使うと key を配列として取得できます。
irb(main):110:0> users = { id: 1, name: 'Masuyama', age
: 29 }
=> {:id=>1, :name=>"Masuyama", :age=>29}
irb(main):111:0> users.keys
=> [:id, :name, :age]
value の一覧を取得
keys と同じく、values メソッドを使うと value を配列として取得できます。
irb(main):112:0> users = { id: 1, name: 'Masuyama', age
: 29 }
=> {:id=>1, :name=>"Masuyama", :age=>29}
irb(main):113:0> users.values
=> [1, "Masuyama", 29]
hash での each メソッド
hash では each メソッドで各要素に対する処理を行うことができます。
hash に each メソッドを使うと、ブロックに key と value の両方が渡されることになります。
irb(main):118:1* users.each do |k, v|
irb(main):119:1* puts "#{k} = #{v}"
irb(main):120:0> end
id = 1
name = Masuyama
age = 29
=> {:id=>1, :name=>"Masuyama", :age=>29}
hash 値の削除
一部の key, value を削除するには delete メソッドを使います。
このとき、第一引数に削除対象の key を指定します。
irb(main):124:0> users
=> {:id=>1, :name=>"Masuyama", :age=>29}
irb(main):125:0> users.delete(:age)
=> 29
irb(main):126:0> users
=> {:id=>1, :name=>"Masuyama"}