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.
collect
vous 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 Enumerabledef kollectnew_ary =self.each do |elem|new_ary << yield(elem)endnew_aryendend
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.