La première étoile est l'opérateur splat. Dans ce cas, il "recueille" tous les paramètres donnés à multiplies_array
dans un seul tableau.
appel comme ceci avec quatre paramètres ...
multiplies_array 1, 2, 3, 4
... vous donne un tableau unique avec quatre éléments dans la méthode.
Cela équivaut à:
def multiplies_array(numbers) # Without splat operator
end
multiplies_array [1, 2, 3, 4]
La deuxième étoile est un peu déroutant. On entend ici par opérateur de multiplication:
Le :
représente un symbole. Toutes les méthodes Enumerable
permettent de passer un symbole en tant que raccourci. Cela signifie: "Appelez la méthode avec ce nom". En d'autres termes, la méthode *
est appliquée à chaque élément de la matrice de nombres. Sans le raccourci symbole de cette ligne ressemblerait à ceci:
numbers.inject(1) { |result, number| result * number) }
J'espère que cela jette un peu de lumière sur tout ce que la magie Ruby :)
Le premier est un "opérateur splat", google it. Deuxième est un symbole régulier (lire la documentation sur 'Enumerable # injecter. –