Ви, напевно, знайомі з такою стенограмою Ruby ( a
це масив):
a.map(&:method)
Наприклад, спробуйте наступне в irb:
>> a=[:a, 'a', 1, 1.0]
=> [:a, "a", 1, 1.0]
>> a.map(&:class)
=> [Symbol, String, Fixnum, Float]
Синтаксис a.map(&:class)
- це скорочення для a.map {|x| x.class}
.
Детальніше про цей синтаксис читайте у " Що означає карта (&: name) у Ruby? ".
Через синтаксис &:class
ви здійснюєте виклик методу class
для кожного елемента масиву.
Моє запитання: чи можете ви надати аргументи для виклику методу? А якщо так, то як?
Наприклад, як перетворити наступний синтаксис
a = [1,3,5,7,9]
a.map {|x| x + 2}
до &:
синтаксису?
Я не припускаю, що &:
синтаксис краще. Мене просто цікавить механіка використання &:
синтаксису з аргументами.
Я припускаю, що ви знаєте, що +
це метод класу Integer. Ви можете спробувати наступне в irb:
>> a=1
=> 1
>> a+(1)
=> 2
>> a.send(:+, 1)
=> 2