Probablemente esté familiarizado con la siguiente abreviatura de Ruby ( aes una matriz):
a.map(&:method)
Por ejemplo, intente lo siguiente en irb:
>> a=[:a, 'a', 1, 1.0]
=> [:a, "a", 1, 1.0]
>> a.map(&:class)
=> [Symbol, String, Fixnum, Float]
La sintaxis a.map(&:class)es una abreviatura de a.map {|x| x.class}.
Lea más sobre esta sintaxis en " ¿Qué significa mapa (&: nombre) en Ruby? ".
A través de la sintaxis &:class, está realizando una llamada classa un método para cada elemento de la matriz.
Mi pregunta es: ¿puede proporcionar argumentos a la llamada al método? Y si es así, ¿cómo?
Por ejemplo, ¿cómo se convierte la siguiente sintaxis
a = [1,3,5,7,9]
a.map {|x| x + 2}
a la &:sintaxis?
No estoy sugiriendo que la &:sintaxis sea mejor. Simplemente estoy interesado en la mecánica de usar la &:sintaxis con argumentos.
Supongo que sabe que +es un método en la clase Integer. Puede probar lo siguiente en irb:
>> a=1
=> 1
>> a+(1)
=> 2
>> a.send(:+, 1)
=> 2