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)    


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow