Vous êtes probablement familier avec le raccourci Ruby suivant ( a
est un tableau):
a.map(&:method)
Par exemple, essayez ce qui suit dans irb:
>> a=[:a, 'a', 1, 1.0]
=> [:a, "a", 1, 1.0]
>> a.map(&:class)
=> [Symbol, String, Fixnum, Float]
La syntaxe a.map(&:class)
est un raccourci pour a.map {|x| x.class}
.
En savoir plus sur cette syntaxe dans " Que signifie map (&: name) dans Ruby? ".
Grâce à la syntaxe &:class
, vous effectuez un appel de méthode class
pour chaque élément du tableau.
Ma question est: pouvez-vous fournir des arguments à l'appel de méthode? Et si oui, comment?
Par exemple, comment convertir la syntaxe suivante
a = [1,3,5,7,9]
a.map {|x| x + 2}
à la &:
syntaxe?
Je ne suggère pas que la &:
syntaxe est meilleure. Je suis simplement intéressé par les mécanismes d'utilisation de la &:
syntaxe avec des arguments.
Je suppose que vous savez que +
c'est une méthode sur la classe Integer. Vous pouvez essayer ce qui suit dans irb:
>> a=1
=> 1
>> a+(1)
=> 2
>> a.send(:+, 1)
=> 2