Rubyのmergeメソッドでハッシュを結合する方法【初心者向け】

初心者向けにRubyのmergeメソッドでハッシュを結合する方法について解説しています。最初にmergeメソッドの基本の書き方を学習します。次に実際に2つのハッシュを結合し、その結果を出力してみましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Rubyのmergeメソッドでハッシュを結合する方法について解説します。

Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

 

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

mergeメソッドでハッシュを結合する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

mergeメソッドとは

mergeメソッドとは複数のハッシュを結合させるメソッドです。

重複するキーがある場合は引数として渡された方のハッシュのキーで上書きされます。

また似たようなメソッドで「merge!メソッド」というのがありますがこちらも複数のハッシュを、結合させるメソッドという点はmergeメソッドと同じです。

2つのメソッドの異なる部分は、レシーバーであるハッシュオブジェクトが、結合後のハッシュオブジェクトに上書きされるという点に違いがあります。

 

mergeメソッドでハッシュを結合する方法

“ハッシュオブジェクト.merge(追加するハッシュオブジェクト)”

という書き方で結合します。

一般的にはハッシュオブジェクトはなんらかの変数に代入してから、書く方がわかりやすいですね。

以下実際にコードを見て具体的に説明してみましょう!!

 

[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

まず最初にハッシュを作成します。

 

hash1 = {"経済学" => 80, "財政学" => 70, "会計学" => 60}

hash2 = {"経営学" => 75, "会社法" => 65}

hash3 = hash1.merge(hash2)

p hash3

#=> {"経済学"=>80, "財政学"=>70, "会計学"=>60, "経営学"=>75, "会社法"=>65}

p hash1 #=> {"経済学"=>80, "財政学"=>70, "会計学"=>60}

p hash2 #=> {"経営学"=>75, "会社法"=>65}

 

ここでhash1は上記で言うところのハッシュオブジェクト、hash2は追加されるハッシュオブジェクトということとなります。

実行するとhash1とhash2が結合されていますね。よく見ていただきたいのが p hash1とp hash2のところです。

こちらハッシュオブジェクトが変更されていませんよね。merge!メソッドですとこのhash1の方が結合後のハッシュオブジェクトへと変更されしまうのです。

ではこmerge!メソッドでみてみましょう!!

 

hash1 = {"経済学" => 80, "財政学" => 70, "会計学" => 60}

hash2 = {"経営学" => 75, "会社法" => 65}

hash3 = hash1.merge!(hash2)

p hash3 #=> {"経済学"=>80, "財政学"=>70, "会計学"=>60, "経営学"=>75, "会社法"=>65}

p hash1 #=>  {"経済学"=>80, "財政学"=>70, "会計学"=>60, "経営学"=>75, "会社法"=>65}

p hash2 #=>  {"経営学" => 75, "会社法" => 65}

 

このようにみるとお分かりのようにhash1が結合後のhash3と同じ結果になっていますね。

これがmergeメソッドとmerge!メソッドの違いであります。hash1のオブジェクト自体が変更されてしまいました。

では最後にキーが重複してしまう場合の例をみてみましょう。

 

hash1 = {"経済学" => 80, "財政学" => 70, "会計学" => 60}
hash2 = {"経営学" => 75, "財政学" => 65}
hash3 = hash1.merge(hash2)

p hash3 #=> {"経済学"=>80, "財政学"=>65, "会計学"=>60, "経営学"=>75}

 

キーとして”財政学”が重複していますね。引数の方の”財政学” => 65

が上書きされhash3では財政学が65となっています。

このように重複するキーがある場合は引数の方の値が上書きされるということを覚えておいてくださいね。

 

筆者プロフィール

町田 耕

学生時代は会計学専攻。塾講師勤務を経て、企業のCFOとして会社経営に携わる。

会社経営から一線を退いた後、インフラエンジニアの妻の勧めでプログラミングを

独学で始め、プログラミングセミナーなど転々としながら、開発案件に携わるようになる。

現在、フリーランスとして活動しながらテックアカデミーのメンターも勤めている。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは初心者でも最短4週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。