0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RubyのHashオブジェクトについて解説

Posted at

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"}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?