🚀

デフォルト値付きの引数があるメソッド(Ruby)

2024/01/30に公開

はじめに

今回はデフォルト値付きの引数について説明していきます!
メソッドの基礎を身につけた上でしっかり見ていきましょう!
メソッドについて、最初から学びたい方は、以下を参考にしてください!
Rubyにおけるメソッドの定義
Ruby のメソッドの戻り値について

引数の過不足によるエラー

Rubyではメソッドを呼び出す際に引数の過不足があるとエラーになります。

def greet(country)
   if country == 'japan'
     'こんにちは'
   else
     'hello'
   end
 end

 # 引数が少ない
 greet
 #=> wrong number of arguments (given 0, expected 1) (ArgumentError)

 # 引数がちょうど
 greet('us') #=> "hello"

 # 引数が多い
 greet('us', 'japan')
 #=> wrong number of arguments (given 2, expected 1) (ArgumentError)

しっかり引数の確認をとらないとエラーになってしまうことが多いです。
(自分もこのエラーはよく起こしています😢)

ただし、Rubyではメソッドの引数の数を柔軟に変える方法がいくつかあります。
そのうちの1つがデフォルト値付きの引数です。
さあ、見ていきましょう!

デフォルト値付きの引数

引数にデフォルト値を付ける場合は次のような構文を使います。

def メソッド(引数1 = デフォルト値1, 引数2 = デフォルト値2)
  # 必要な処理
end

先ほどのgreetメソッドにデフォルト値を設定してみましょう。
こうすると引数なしで呼び出した場合でもエラーになりません。

# 引数なしの場合はcountryに'japan'を設定する
 def greet(country = 'japan')
   if country == 'japan'
     'こんにちは'
   else
     'hello'
   end
 end

 greet       #=> "こんにちは"
 greet('us') #=> "hello"

また、他には以下のようなデフォルト値の引数もあります。
・デフォルト値ありとデフォルト値なしの引数を混在させることも可能。
・デフォルト値は固定の値だけでなく、動的に変わる値や、ほかのメソッドの戻り値を指定できる。

他にはメソッドの引数を柔軟に変更する方法もあります。これについては後日見ていこうと思います!
メソッドは奥が深いですね、、、

さいごに

デフォルト値付きの引数があるメソッドについてみていきました。
他にもメソッドには種類があるので、続きは次回見ていきます!

参考文献

プロを目指す人のためのRuby入門 改訂2版
Rubyにおけるメソッドの定義
Ruby のメソッドの戻り値について

Discussion