【Hashオブジェクト】Rubyの基礎【ハッシュ】

Ruby

今回はRubyのHashオブジェクトについての学習方法について解説していきます。

Hashオブジェクトとはキー(key)とバリュー(value)の組み合わせでデータを表現出来るオブジェクトです。

スポンサーリンク

Hashオブジェクトの宣言

基本は中括弧を使って以下のように宣言できます。

[1] pry(main)> user1 = { name: '太郎'}
=> {:name=>"太郎"}
[2] pry(main)> user2 = { id: 2, name: '花子' }
=> {:id=>2, :name=>"花子"}

Hashオブジェクトの参照

以下のようにコロン「:」+キーでバリューを参照できます。

[3] pry(main)> user1[:name]
=> "太郎"
[4] pry(main)> user2[:id]
=> 2
[5] pry(main)> user2[:name]
=> "花子"
# キーをStringで指定しても参照できない
[6] pry(main)> user1['name']
=> nil

キーをStringで宣言する方法

上記の例ではキーをStringで指定しても参照できていませんでしたが、明示的にキーをStringで宣言するとStringで参照可能になります。

[7] pry(main)> user3 = { 'id' => 3, 'name' => '三郎' }
=> {"id"=>3, "name"=>"三郎"}
[8] pry(main)> user3['name']
=> "三郎"
[9] pry(main)> user3['id']
=> 3

Hashオブジェクトの階層構造

以下のように階層構造を宣言することができます。

[10] pry(main)> user4 = {
[10] pry(main)*   name: '四郎',
[10] pry(main)*   test_result: {
[10] pry(main)*     math: 90,
[10] pry(main)*     science: 80
[10] pry(main)*   }
[10] pry(main)* }
=> {:name=>"四郎", :test_result=>{:math=>90, :science=>80}}

# 階層構造への参照
[12] pry(main)> user4[:test_result][:math]
=> 90

Hashオブジェクトの階層構造の書き換え

階層構造のバリューを書き換える際は以下のように記載できます。

[13] pry(main)> user4[:test_result][:math] = 95
=> 95
[14] pry(main)> user4
=> {:name=>"四郎", :test_result=>{:math=>95, :science=>80}}

キー、バリューごとの配列の取得

keysメソッドとvaluesメソッドで取得できます。

[15] pry(main)> user4.keys
=> [:name, :test_result]
[16] pry(main)> user4.values
=> ["四郎", {:math=>95, :science=>80}]

Hashオブジェクトのeach文

ブロックに2つの値が渡され、一つ目の値がキー(以下の例では「k」)、二つ目の値がバリュー(以下の例では「v」)になります。

[17] pry(main)> user4.each do |k, v|
[17] pry(main)*   puts "#{k} = #{v}"
[17] pry(main)* end
name = 四郎
test_result = {:math=>95, :science=>80}
=> {:name=>"四郎", :test_result=>{:math=>95, :science=>80}}

キー、バリューの削除

deleteメソッドを使うことでキー、バリューを削除することができます。

[18] pry(main)> user4.delete(:test_result)
=> {:math=>95, :science=>80}
[19] pry(main)> user4
=> {:name=>"四郎"}

フリーランスを目指すなら【テックパートナーズカレッジ】

未経験者向けWEBスクール【SHElikes】

コメント