Ruby Language
Splat-Operator (*)
Suche…
Arrays in Parameterliste umwandeln
Angenommen, Sie hatten ein Array:
pair = ['Jack','Jill']
Und eine Methode, die zwei Argumente braucht:
def print_pair (a, b)
puts "#{a} and #{b} are a good couple!"
end
Sie denken vielleicht, Sie könnten einfach das Array übergeben:
print_pair(pair) # wrong number of arguments (1 for 2) (ArgumentError)
Da das Array nur ein Argument und nicht zwei Argumente ist, löst Ruby eine Ausnahme aus. Sie können jedes Element einzeln herausziehen:
print_pair(pair[0], pair[1])
Oder Sie können den Splat-Operator verwenden, um sich etwas Mühe zu sparen:
print_pair(*pair)
Variable Anzahl von Argumenten
Der Splat-Operator entfernt einzelne Elemente eines Arrays und macht sie zu einer Liste. Dies wird am häufigsten zum Erstellen einer Methode verwendet, die eine variable Anzahl von Argumenten akzeptiert:
# 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')
Beachten Sie, dass ein Array nur als ein Element in der Liste zählt. Daher müssen Sie auch den Splat-Operator auf der aufrufenden Seite verwenden, wenn Sie ein Array haben, das Sie übergeben möchten:
bonaparte = ['Napoleon','Joséphine','Marie Louise']
print_spouses(*bonaparte)