平凡エンジニアによる平凡ブログ

平凡インフラエンジニアがスキルアップを目指してプログラミングやクラウドやサーバといったインフラのアウトプットをしていきます!

【ruby】引数の設定方法について(デフォルト、キーワード、可変長引数)

rubyのメソッドを使用する際に引数を使うことがあるが、この引数の渡し方
については様々な方法があることを学びましたので、備忘録として残します。

今日学んだのはデフォルト値、キーワード変数、可変長引数です。

1.デフォルト値

def test(a: "AAA", b: "BBB", c: 'CCC')
  puts a
  puts b
  puts c
end

test

#結果
AAA
BBB
CCC


def test(a: "AAA", b: "BBB", c: 'CCC')
  puts a
  puts b
  puts c
end

test(a:"DDD")

#結果
DDD
BBB
CCC

デフォルト値を設定しておくと、引数なしの場合、実行してもデフォルト値を元にメソッドが実行される。
2つ目のコードで「a」に引数を設定してメソッドを実行すると、aは設定された引数が渡されるが、設定がなかったbとcはデフォルト値が渡されることになる。

2.キーワード変数

def hello(from: 'Tom',to:'good morning')
puts "#{from}: Hello, #{to}!"
end

hello(from: 'Tom') 
#結果
Tom: Hello, good morning!

def hello(from: 'Tom',to:'good morning')
  puts "#{from}: Hello, #{to}!"
end
  
hello(to:'good night',from: 'Tom') 
#結果
Tom: Hello, good night!

キーワード引数の理解が難しいですが、引数をkey:値で設定している引数のことと理解しました。
あんまりメリットがわかりにくいですが2つ目のコードでto,fromを逆にしても正常に表示されていることがわかります。

通常の引数は実引数の(1,2)で設定すると仮変数(1,2)で引き渡しを行います。
キーワード引数を設定すると、どのkeyにどの引数を渡しているのか区別しやすいとうメリットがあります。

3.可変長引数

def test(*numbers)
  puts "今日は#{numbers}です。"
end

test("1","2","3","4")

#結果
今日は["1", "2", "3", "4"]です。

可変長引数は仮引数に*をつけると引数を配列として受け取ることができます。

その他まだ引数の渡し方はあるので、別の機会に学ぶことにする。