icon
icon

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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

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

 
そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。

なお本記事は、TechAcademyのオンラインブートキャンプRuby講座の内容をもとに紹介しています。

 

田島悠介

今回は、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では、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。