Ruby初心者が知るべき5つの引数デフォルト値の活用法

Rubyの引数デフォルト値の使い方を学ぶ初心者の人Ruby
この記事は約5分で読めます。

 

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

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

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

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

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

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

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

はじめに

Rubyを始めて学ぶ初心者の皆様、こんにちは。

プログラミングにおいて、関数の引数とそのデフォルト値は非常に重要な役割を果たします。

デフォルト値は、関数が呼び出されたときに引数が指定されなかった場合に使用される値です。

Rubyにおいては、引数のデフォルト値を設定することができ、その活用方法を理解することは、効率的で柔軟なコードを書く上で重要となります。

この記事では、その活用法を5つのステップで解説します。

●Rubyとは

Rubyは、まつもとゆきひろ氏によって開発されたプログラミング言語で、簡潔さと可読性を重視した設計がなされています。

オブジェクト指向の特性を強く持ち合わせており、文法が直感的で理解しやすいことから、初学者にも学びやすい言語とされています。

●引数とデフォルト値の概要

関数は、一連の処理をまとめたもので、それを呼び出す際に引数を与えることで、その処理をカスタマイズすることができます。

引数が何も渡されなかったときに使用する値がデフォルト値です。

Rubyでは、関数の引数にデフォルト値を設定することが可能で、これにより引数の省略や変数の初期値設定など、多くの場面で便利に活用できます。

●Rubyにおける引数のデフォルト値の基本的な使い方

○サンプルコード1:デフォルト値を持つ引数の関数

Rubyでデフォルト値を持つ引数を定義するには、次のようにします。

def greet(name = "世界")
  puts "こんにちは、#{name}さん!"
end

greet("山田")  # => こんにちは、山田さん!
greet()        # => こんにちは、世界さん!

このコードでは、greetという関数を定義しています。

この関数は1つの引数nameを持ち、デフォルト値として”世界”を指定しています。

関数が呼び出され、引数が指定された場合にはその値がnameとなりますが、何も指定されなかった場合にはデフォルト値の”世界”が使用されます。

●引数のデフォルト値の活用法

○サンプルコード2:デフォルト値を活用した関数の例

次に、デフォルト値を持つ引数が具体的にどのように活用されるか見てみましょう。

例えば、ユーザーの年齢を計算する関数を考えてみます。

この関数は、生年月日と現在の年を引数に取り、年齢を計算します。

現在の年はデフォルト値として設定することができます。

def calculate_age(birth_year, current_year = Time.now.year)
  current_year - birth_year
end

puts calculate_age(2000)     # => 23
puts calculate_age(2000, 2022) # => 22

このコードでは、calculate_ageという関数を定義し、生年月日のbirth_yearと現在の年current_yearを引数としています。

現在の年はデフォルト値として設定しています。

このデフォルト値は、現在の年を動的に取得するTime.now.yearを利用しています。

○サンプルコード3:オプショナルな引数の使用例

引数のデフォルト値を設定することにより、その引数はオプショナルなものとなります。

これにより、関数を呼び出す際に柔軟性が増します。

def make_coffee(type = "アメリカン", sugar = 0, milk = 0)
  puts "#{type}を作ります。砂糖は#{sugar}個、ミルクは#{milk}個使用します。"
end

make_coffee
make_coffee("エスプレッソ")
make_coffee("エスプレッソ", 2)
make_coffee("エスプレッソ", 2, 1)

このコードでは、make_coffeeという関数を定義しています。

コーヒーの種類(type)、砂糖の量(sugar)、ミルクの量(milk)を引数としています。

各引数にはデフォルト値を設定しているため、これらの引数は全てオプショナルです。

これにより、関数を呼び出す際に引数を指定しなくても、あるいは一部の引数だけを指定しても、関数は問題なく動作します。

●引数のデフォルト値の注意点

○サンプルコード4:デフォルト値を持つ引数の注意点

Rubyでは、引数のデフォルト値として変更可能なオブジェクト(例えば、配列やハッシュ)を使用するときには注意が必要です。

これは、デフォルト値が関数が呼び出されるたびに新しく生成されるのではなく、一度だけ生成されるためです。

def add_to_array(value, array = [])
  array << value
end

p add_to_array("a")  # => ["a"]
p add_to_array("b")  # => ["a", "b"]

このコードでは、デフォルト値として配列を使用していますが、それが期待した動作をしないことが分かります。

これは、デフォルト値として設定された配列が関数が呼び出されるたびに新しく生成されず、同じ配列が使用され続けるためです。

●デフォルト値のカスタマイズ方法

○サンプルコード5:デフォルト値をカスタマイズする方法

上述の問題を解決するためには、デフォルト値を生成するコードを直接引数のデフォルト値として書くのではなく、関数内で生成するようにすれば良いです。

def add_to_array(value, array = nil)
  array = array || []
  array << value
end

p add_to_array("a")  # => ["a"]
p add_to_array("b")  # => ["b"]

このコードでは、引数のデフォルト値をnilに設定し、関数内で配列がnilの場合に新たな配列を生成しています。

これにより、関数が呼び出されるたびに新たな配列が生成され、上述の問題が解決します。

まとめ

以上、Ruby初心者が知るべき引数のデフォルト値の活用法について説明しました。

引数のデフォルト値は、関数の柔軟性を向上させる有効なツールです。

しかし、デフォルト値として変更可能なオブジェクトを使用するときには注意が必要です。

これらの知識を活かして、より効率的なコードを書いてみてください。