導入
メソッドは「いくつ渡されるか分からない引数」を受け取ったり、短く一行で定義したりできます。実務でよく見る2つの記法、可変長引数(*args)とエンドレスメソッド定義(Ruby 3.0〜)を学びます。
説明
引数名に * を付けると、渡された引数をまとめて配列で受け取れます。個数が決まっていない処理に便利です。
def total(*nums)
nums.sum
end
puts total(1, 2, 3, 4) # 10
puts total(10, 20) # 30
puts total # 0(0個でもOK)
呼び出す側で配列を * で展開して渡すこともできます。
def introduce(name, age)
"#{name}(#{age}歳)"
end
data = ["花子", 25]
puts introduce(*data) # 花子(25歳)
本体が式ひとつだけのメソッドは、def 名前(引数) = 式 と一行で書けます(エンドレスメソッド定義)。短い計算メソッドをすっきり書けます。
def square(n) = n * n
def greet(name) = "こんにちは、#{name}さん"
puts square(6) # 36
puts greet("太郎") # こんにちは、太郎さん
やってみよう
total に渡す個数を変えたり、*data で配列を展開して渡したり、自分の短いメソッドをエンドレス記法で定義してみましょう。
演習
エンドレスメソッド定義で cube(n) を作り、n の3乗(n ** 3)を返すようにしてください。cube(3) の結果を puts で表示します(27 になります)。
ヒント1を見る
def cube(n) = n ** 3 と一行で書けます。