Articles

Implémentation de Ruby 'Méthode de collecte de Ruby

Méthode de collecte de Ruby

La méthode de collect fait partie du mixin énumérable; un mixin qui fournit des méthodes très utiles et puissantes pour les objets de collection. collect est une méthode que j’utilise tout le temps et dont j’ai récemment parlé dans mon article Travailler avec des énumérables: Quatre méthodes de collection puissantes.

collectvous permet de transformer chaque élément de votre objet de collection (Tableau, Hachage ou votre propre objet) en autre chose, se terminant par un Tableau.

Voici un exemple simple de prendre un tableau d’entiers et de multiplier chacun d’eux par 2.

.collect{ |num| num * 2 }
#

Ré-implémentation de la méthode Collect

Je voulais créer ma propre méthode collect pour voir comment elle est implémentée. Il s’avère que cela se fait assez facilement, en environ 5 lignes de code. Je devrais dire que le seul cas d’utilisation que je ne couvre pas est lorsqu’aucun bloc n’est passé à la méthode, auquel cas un énumérateur est généralement renvoyé.

Nous ajouterons notre nouveau kollect (pour que les noms ne soient pas en conflit) au module énumérable. En parcourant notre collection, nous appliquerons le bloc à chaque élément, en ajoutant le résultat renvoyé à un nouveau tableau en cours de création.

module Enumerable
def kollect
new_ary =
self.each do |elem|
new_ary << yield(elem)
end
new_ary
end
end

Si nous comparons cela au code source de Ruby, il fait essentiellement la même chose, mais c’est beaucoup plus simple car nous travaillons avec Ruby lui-même, et non avec C.

En utilisant notre nouvelle méthode de collecte

Maintenant, il ne reste plus qu’à voir si la méthode kollect fonctionne réellement! Je voulais l’essayer en utilisant à la fois la syntaxe de bloc normale, mais aussi la main courte &:syntaxe method_name, pour s’assurer que les deux fonctionnent.

Super! Dans les deux cas, il prend les noms du tableau et les convertit en majuscules.