サーチ…


配列をパラメータリストに強制する

配列があるとします:

pair = ['Jack','Jill']

そして2つの引数をとる方法:

def print_pair (a, b)
  puts "#{a} and #{b} are a good couple!"
end

あなたは配列を渡すことができると思うかもしれません:

print_pair(pair) # wrong number of arguments (1 for 2) (ArgumentError)

配列は2つではなく1つの引数なので、Rubyは例外をスローします。個々の要素を個別に取り出すことができます:

print_pair(pair[0], pair[1])

または、splat演算子を使用して、自分自身を少しでも節約できます。

print_pair(*pair)

変数の数

splat演算子は、配列の個々の要素を削除し、それらをリストにします。これは、可変数の引数を受け入れるメソッドを作成するために最も一般的に使用されます。

# First parameter is the subject and the following parameters are their spouses
def print_spouses(person, *spouses)
  spouses.each do |spouse|
    puts "#{person} married #{spouse}."
  end
end

print_spouses('Elizabeth', 'Conrad', 'Michael', 'Mike', 'Eddie', 'Richard', 'John', 'Larry')

配列はリストの1つの項目としてカウントされることに注意してください。渡す配列がある場合は、呼び出し側のsplat演算子も必要です。

bonaparte = ['Napoleon','Joséphine','Marie Louise']
print_spouses(*bonaparte)    


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow