Szukaj…


Zmuszanie tablic do listy parametrów

Załóżmy, że masz tablicę:

pair = ['Jack','Jill']

I metoda, która przyjmuje dwa argumenty:

def print_pair (a, b)
  puts "#{a} and #{b} are a good couple!"
end

Możesz pomyśleć, że możesz po prostu przekazać tablicę:

print_pair(pair) # wrong number of arguments (1 for 2) (ArgumentError)

Ponieważ tablica jest tylko jednym argumentem, a nie dwoma, więc Ruby zgłasza wyjątek. Można wyciągnąć każdy element osobno:

print_pair(pair[0], pair[1])

Lub możesz użyć operatora splat, aby zaoszczędzić trochę wysiłku:

print_pair(*pair)

Zmienna liczba argumentów

Operator splat usuwa poszczególne elementy tablicy i tworzy z nich listę. Jest to najczęściej używane do stworzenia metody, która akceptuje zmienną liczbę argumentów:

# 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')

Zauważ, że tablica liczy się tylko jako jeden element na liście, więc będziesz potrzebować operatora splat również po stronie wywołującej, jeśli masz tablicę, którą chcesz przekazać:

bonaparte = ['Napoleon','Joséphine','Marie Louise']
print_spouses(*bonaparte)    


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow