Ruby Language
Splat-operatör (*)
Sök…
Tvinga upp matriser i parameterlistan
Anta att du hade en matris:
pair = ['Jack','Jill']
Och en metod som tar två argument:
def print_pair (a, b)
puts "#{a} and #{b} are a good couple!"
end
Du kanske tror att du bara kunde passera matrisen:
print_pair(pair) # wrong number of arguments (1 for 2) (ArgumentError)
Eftersom matrisen bara är ett argument, inte två, så Ruby kastar ett undantag. Du kan dra ut varje element individuellt:
print_pair(pair[0], pair[1])
Eller så kan du använda splatoperatören för att spara dig själv några ansträngningar:
print_pair(*pair)
Variabelt antal argument
Delningsoperatören tar bort enskilda element i en matris och gör dem till en lista. Detta används oftast för att skapa en metod som accepterar ett variabelt antal argument:
# 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')
Lägg märke till att en matris bara räknas som ett objekt i listan, så du måste också oss splatoperatören på den samtalssidan om du har en matris du vill skicka:
bonaparte = ['Napoleon','Joséphine','Marie Louise']
print_spouses(*bonaparte)
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow