Ruby Language
Splat-operator (*)
Zoeken…
Matrices dwingen tot parameterlijst
Stel dat u een array had:
pair = ['Jack','Jill']
En een methode waarvoor twee argumenten nodig zijn:
def print_pair (a, b)
puts "#{a} and #{b} are a good couple!"
end
Je denkt misschien dat je de reeks gewoon zou kunnen passeren:
print_pair(pair) # wrong number of arguments (1 for 2) (ArgumentError)
Omdat de array slechts één argument is, geen twee, maakt Ruby een uitzondering. Je zou kunnen individueel trekken uit elk element:
print_pair(pair[0], pair[1])
Of u kunt de splat-operator gebruiken om uzelf wat moeite te besparen:
print_pair(*pair)
Variabel aantal argumenten
De splat-operator verwijdert afzonderlijke elementen van een array en maakt er een lijst van. Dit wordt meestal gebruikt om een methode te maken die een variabel aantal argumenten accepteert:
# 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')
Merk op dat een array slechts als één item op de lijst telt, dus u moet ook de splat-operator aan de oproepende kant hebben als u een array hebt die u wilt doorgeven:
bonaparte = ['Napoleon','Joséphine','Marie Louise']
print_spouses(*bonaparte)
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow