Probabilmente hai familiarità con la seguente scorciatoia di Ruby ( a
è un array):
a.map(&:method)
Ad esempio, prova quanto segue in irb:
>> a=[:a, 'a', 1, 1.0]
=> [:a, "a", 1, 1.0]
>> a.map(&:class)
=> [Symbol, String, Fixnum, Float]
La sintassi a.map(&:class)
è un'abbreviazione per a.map {|x| x.class}
.
Maggiori informazioni su questa sintassi in " Cosa significa map (&: name) in Ruby? ".
Attraverso la sintassi &:class
, stai effettuando una chiamata al metodo class
per ogni elemento dell'array.
La mia domanda è: puoi fornire argomenti alla chiamata al metodo? E se sì, come?
Ad esempio, come convertire la seguente sintassi
a = [1,3,5,7,9]
a.map {|x| x + 2}
alla &:
sintassi?
Non sto suggerendo che la &:
sintassi sia migliore. Sono semplicemente interessato alla meccanica dell'uso della &:
sintassi con gli argomenti.
Presumo che tu sappia che +
è un metodo sulla classe Integer. Puoi provare quanto segue in irb:
>> a=1
=> 1
>> a+(1)
=> 2
>> a.send(:+, 1)
=> 2