Ruby Language
Operatore Splat (*)
Ricerca…
Array coercing nell'elenco dei parametri
Supponi di avere un array:
pair = ['Jack','Jill']
E un metodo che prende due argomenti:
def print_pair (a, b)
puts "#{a} and #{b} are a good couple!"
end
Potresti pensare di poter passare semplicemente l'array:
print_pair(pair) # wrong number of arguments (1 for 2) (ArgumentError)
Dato che l'array è solo un argomento, non due, quindi Ruby lancia un'eccezione. Si potrebbe tirare fuori ogni elemento singolarmente:
print_pair(pair[0], pair[1])
Oppure puoi usare l'operatore splat per risparmiarti qualche sforzo:
print_pair(*pair)
Numero variabile di argomenti
L'operatore di splat rimuove i singoli elementi di un array e li trasforma in un elenco. Questo è più comunemente usato per creare un metodo che accetta un numero variabile di argomenti:
# 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')
Si noti che un array conta solo come un elemento nell'elenco, quindi sarà necessario anche l'operatore splat sul lato chiamante se si dispone di un array che si desidera passare:
bonaparte = ['Napoleon','Joséphine','Marie Louise']
print_spouses(*bonaparte)
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow