本記事ではメソッドの基本的な文法と使用方法をまとめています。
目次
・メソッドの定義方法
・キーワード引数
メソッドについて
メソッドの定義方法
example_1.rb
def <メソッド> <引数リスト>
# ここに処理を記述
end
引数リストは「()かっこ」をつけることも、省略することもできる
example_2.rb
a = 1
b = 2
def test a,b
a + b
=> 3
end
一番最後に行われた処理が結果(返り値)となる
上記のように定義したメソッドは、メソッド名を記述して呼び出すことができる。
def式で指定する引数は「仮引数」と呼ぶ
メソッドに引数が設定されている場合は、メソッド名に続いて引数を設定して呼び出す。
メソッドを実行する際に記述する引数を「実引数」と呼ぶ。
example_3.rb
# メソッドの呼び出しと実引数の設定
test(3,4)
# 呼び出されたメソッドにて、設定された実引数をもとに処理を行う。ここではaとbが仮引数となる
def test a,b
a + b
=> 7
end
指定された実引数の数が仮引数の数よりも少ない場合、ArgumentErrorが発生するため、
仮引数ではデフォルト値を指定できる。
example_4.rb
# ここでは変数bにデフォルト値を設定している
def test (a, b=100)
a + b
end
# 仮引数の数 = 実引数の数の場合
test(9,10) => 19
# 仮引数の数 > 実引数の数
test(5) => 105
# 仮引数でデフォルト値を設定していない変数aに対しても引数を渡さない場合
test => ArgumentError
キーワード引数
仮引数とデフォルト値をコロン「:」で結び付けて定義ができる方法
キーワード引数を用いてメソッドを定義すると以下のようになる。
example_5.rb
def test(a:, b: 100)
a + b
end
test(a: 5, b:9 ) = > 14
test(a: 5) = > 105
# 仮引数でデフォルト値を設定していない変数aに対してもキーワード引数を渡さない場合
test => ArgumentError
# キーワード引数に存在しない引数名を渡した場合
test(a:100, c:120) => ArgumentError
キーワード引数に任意の引数を使用したい場合は以下のように定義すればArgumentErrorが発生しない
example_6.rb
def test2(a:, b: 100, **z)
p z
a + b
end
# 仮引数として設定していない変数cとdの値も受け取ることができ、エラーが発生しなくなる
test2(a: 2, c: 100, d:200 ) => 102
コンソール上に{:c => 100, d=> 200}が出力される