Prawdopodobnie znasz następujący skrót języka Ruby ( ajest to tablica):
a.map(&:method)
Na przykład spróbuj wykonać następujące czynności w irb:
>> a=[:a, 'a', 1, 1.0]
=> [:a, "a", 1, 1.0]
>> a.map(&:class)
=> [Symbol, String, Fixnum, Float]
Składnia a.map(&:class)jest skrótem dla a.map {|x| x.class}.
Przeczytaj więcej o tej składni w " Co oznacza map (&: name) w Rubim? ".
Poprzez składnię &:classwywołujesz metodę classdla każdego elementu tablicy.
Moje pytanie brzmi: czy możesz podać argumenty do wywołania metody? A jeśli tak, to w jaki sposób?
Na przykład, jak przekonwertować następującą składnię
a = [1,3,5,7,9]
a.map {|x| x + 2}
do &:składni?
Nie sugeruję, że &:składnia jest lepsza. Interesuje mnie tylko mechanika używania &:składni z argumentami.
Zakładam, że wiesz, że +jest to metoda na klasie Integer. W irb możesz spróbować następujących rzeczy:
>> a=1
=> 1
>> a+(1)
=> 2
>> a.send(:+, 1)
=> 2