Je n'arrive pas à comprendre quand utiliser l'esperluette pour transmettre des symboles à des fonctions représentant une méthode. Par exemple, si je voulais calculer la somme de la gamme 1..10, je pouvais faire ce qui suit:Différence entre passing &: méthode et: méthode comme arguments de fonction dans ruby
(1..10).inject(:+)
Cela me conduit à l'origine de croire que si vous vouliez passer un symbole pour définir un Si vous utilisez la méthode "Magiquement" dans la fonction, vous devez passer le nom de la fonction comme symbole. Mais je vois quelque chose comme ça dans des rails:
total = Product.find(product_list).sum(&:price)
Si je comprends bien, &: prix est le même que l'appel: price.to_proc. Je ne comprends pas comment cela fonctionne.
Cela n'a rien à voir avec Enumerable # Inject, je l'ai juste utilisé comme exemple. – Senjai
L'effet de ': +' dépend fortement de 'injecter' dans votre exemple alors que' &: price' ne le fait pas. –
Merci d'avoir éclairci ça pour moi. – Senjai