Probablemente esté familiarizado con la siguiente abreviatura de Ruby ( a
es 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 class
a 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