Rubyのsplat引数、splat展開
配列の場合
*Arrayのように書くことで、引数を配列として受け取ったり、配列の値を展開して渡したりできる
引数の直前に * がついている場合、その引数の値が展開されて渡されます。展開はメソッド to_a を経由して行なわれます。
左辺の最後の式の直前に * がついていると、対応する左辺のない余った要素が配列として代入されます。余った要素が無い時には空の配列が代入されます。
ハッシュの場合
**Hashのように書くことで、ハッシュリテラル内でハッシュのキーと値を展開できる
キーワード引数として定義されていない任意のキーワードを、ハッシュとして受け取ることができる
code:sample.rb
def buy_burger(menu, drink: true, potato: true, **others)
puts others
# 省略
end
buy_burger('fish', drink: true, potato: false, salad: true, chicken: false)
# => {:salad=>true, :chicken=>false}