破いて捨てたノート

Webやテクノロジーやそれ以外に関する思いつき

Ruby 仮引数の * と実引数の *

よく混乱してしまうので整理。

仮引数の * は可変長引数

def greet name, *messages
  messages.each do |message|
    puts "#{message}, #{name}."
  end
end

greet 'Ruby', 'Hello', 'こんにちは'
# => "Hello, Ruby." "こんにちは, Ruby."

# 単に引数を無視したい場合にも使える
def greet name, *
end

実引数の * は配列の展開

def greet_twice name, first_message, second_message
  puts "#{first_message}, #{name}."
  puts "#{second_message}, #{name}." 
end

greetings = %w(Hello Hola)

greet_twice 'Ruby', *greetings
# => "Hello, Ruby." "Hola, Ruby."

パーフェクトRuby (PERFECT SERIES 6)

パーフェクトRuby (PERFECT SERIES 6)