8.11. Metody wywoływane ze zmienną liczbą argumentów

Problem

Chcemy stworzyć metodę, którą będzie można wywoływać z różną liczbą parametrów. Chcielibyśmy także przekazywać elementy tablicy jako poszczególne argumenty, zamiast całej tablicy tako pojedynczego argumentu.

Rozwiązanie

Aby można było wywoływać metodę ze zmienną liczbą argumentów, należy w jej definicji poprzedzić gwiazdką jej ostatni parametr; gdy metoda zostanie wywołana, „nadmiarowe” argumenty tego wywołania zostaną połączone w listę wraz z ostatnim „regularnym” argumentem, a listę tę reprezentować będzie parametr „z gwiazdką”.

def sum(*numbers) puts "Obliczam sumę elementów tablicy #{numbers.inspect}" numbers.inject(0) { |sum, x| sum += x } end sum(1, 2, 10) # Obliczam ...

Get Ruby. Receptury now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.