【Ruby】多重代入の全面解説と実用例10選

Rubyの多重代入を詳しく解説した記事のサムネイルRuby
この記事は約6分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

Rubyはその豊かな表現力と直感的な文法により、初心者から経験者まで幅広い層に支持されています。

この記事では、Rubyの重要な特徴の1つである「多重代入」に焦点を当て、その基本的な使い方から応用例、そして注意点とカスタマイズ方法まで、網羅的に解説します。

この記事を読むことで、Rubyの多重代入を理解し、より効率的なコーディングを身につけることができるでしょう。

●Rubyとは

Rubyは、まつもとゆきひろ(通称Matz)によって開発されたオブジェクト指向スクリプト言語です。

Rubyは「プログラマのための言語」という哲学の下に設計されており、コードが直感的で可読性が高いという特徴を持っています。

そのため、初心者でも扱いやすく、またその表現力と柔軟性から経験者にも高く評価されています。

●多重代入とは

多重代入とは、1つの式で複数の変数に値を同時に代入する機能のことを指します。

これにより、コードを簡潔に書くことができ、また一部の計算を効率的に行うことも可能になります。

●Rubyでの多重代入の基本的な使い方

それでは、多重代入の基本的な使い方から見ていきましょう。

○サンプルコード1:基本的な多重代入

# 多重代入の基本的な使い方
a, b = 1, 2
puts a # => 1
puts b # => 2

このコードでは、変数aに1、変数bに2を一度に代入しています。

この例では、1行で2つの変数に異なる値を代入することができています。

●多重代入の応用例

多重代入は基本的な使い方だけでなく、様々な応用例が存在します。

いくつかの応用例とそのサンプルコードを表します。

○サンプルコード2:配列を利用した多重代入

# 配列を利用した多重代入
array = [1, 2, 3]
a, b, c = array
puts a # => 1
puts b # => 

2
puts c # => 3

このコードでは、配列の各要素をそれぞれ異なる変数に一度に代入しています。

この例では、配列の要素をそれぞれ個別の変数に格納しています。

○サンプルコード3:一行での変数の値の入れ替え

# 一行での変数の値の入れ替え
a, b = 1, 2
a, b = b, a
puts a # => 2
puts b # => 1

このコードでは、多重代入を使って一行で二つの変数の値を入れ替えています。

この例では、一般的な方法(一時的な変数を作成する等)と比べて、より短いコードで変数の値の交換を行っています。

○サンプルコード4:配列の要素を一度に取得

# 配列の要素を一度に取得
array = [1, 2, 3, 4, 5]
a, b, c, d, e = array
puts a # => 1
puts b # => 2
puts c # => 3
puts d # => 4
puts e # => 5

このコードでは、配列の各要素をそれぞれ個別の変数に代入しています。

この例では、5つの要素がある配列の全ての要素をそれぞれの変数に一度に割り当てています。

次に、関数の戻り値の多重代入について説明します。

○サンプルコード5:戻り値を分割代入

# 戻り値を分割代入
def multiple_return
  return 1, 2, 3
end
a, b, c = multiple_return
puts a # => 1
puts b # => 2
puts c # => 3

このコードでは、関数の戻り値を複数の変数に一度に代入しています。

この例では、関数multiple_returnが3つの数値を返し、その3つの数値がそれぞれa、b、cに代入されています。

しかし、この便利な多重代入ですが、注意すべき点があります。それについて次に説明しましょう。

●注意点と対処法

多重代入は非常に便利な機能ではありますが、配列のサイズが左辺の変数の数と一致しないときには注意が必要です。

○注意点1:配列のサイズが異なる場合の多重代入

配列の要素数が左辺の変数の数より多い場合、余った要素は無視されます。

一方、配列の要素数が左辺の変数の数より少ない場合、足りない分の変数にはnilが代入されます。

それぞれの例を見てみましょう。

# 要素が多い場合
a, b = [1, 2, 3]
puts a # => 1
puts b # => 2

# 要素が少ない場合
a, b = [1]
puts a # => 1
puts b # => nil

この問題を避けるための対処法は次の2つがあります。

○対処法:右辺の要素が足りないとき

配列の要素が足りない場合には、次のようにデフォルト値を設定することができます。

# 要

素が足りない場合の対処法
a, b = [1, 2]
c, d = [3]
c, d = c, d || 4
puts c # => 3
puts d # => 4

このコードでは、右辺の配列の要素が足りない場合には、指定したデフォルト値が代入されます。

この例では、dに値がないため、4が代入されます。

○対処法:左辺の変数が足りないとき

左辺の変数が足りない場合には、余った要素を配列としてまとめて取得することができます。

ただし、これには特殊な記法が必要で、その詳細は「Rubyでの多重代入のカスタマイズ方法」で説明します。

●Rubyでの多重代入のカスタマイズ方法

Rubyの多重代入では、左辺の変数が足りない場合に、余った要素を配列としてまとめて取得することができます。

これは次のように行います。

○サンプルコード6:左辺に*を使って複数の値を一つの配列にまとめる

# 左辺に*を使って複数の値を一つの配列にまとめる
a, *b = [1, 2, 3, 4, 5]
puts a # => 1
puts b # => [2, 3, 4, 5]

このコードでは、左辺に*を使って複数の値を一つの配列にまとめています。

この例では、配列の最初の要素はaに、残りの全ての要素は配列bにまとめて格納されています。

まとめ

以上、Rubyにおける多重代入について詳しく解説してきました。

多重代入は、複数の値を一度に代入したり、配列の要素を一度に取得したりするときに大変便利な機能です。

しかし、注意点も存在しますので、それらを理解した上で適切に利用することが重要です。

特に初心者の方は、この記事で解説した各種のサンプルコードを試しながら、多重代入の使い方を覚えていきましょう。