Implementazione di Ruby ' Metodo di raccolta di Ruby
Metodo di raccolta di Ruby
Il metodo di raccolta di Rubycollect
fa parte del mixin enumerabile; un mixin che fornisce metodi molto utili e potenti per gli oggetti di raccolta. collect
è un metodo che uso sempre e di recente ho scritto nel mio articolo Lavorando con enumerables: quattro potenti metodi di raccolta.
collect
consente di trasformare ogni elemento del proprio oggetto di raccolta (Array, Hash o il proprio oggetto) in qualcos’altro, finendo con un Array.
Ecco un semplice esempio di prendere una matrice di numeri interi e moltiplicare ciascuno di essi per 2.
.collect{ |num| num * 2 }#
Re-implementare il metodo Collect
Volevo creare il miocollect
metodo per vedere come viene implementato. Si scopre che è fatto abbastanza facilmente, in circa 5 righe di codice. Dovrei dire che l’unico caso d’uso che non copro è quando nessun blocco viene passato al metodo, nel qual caso viene solitamente restituito un Enumeratore.
Aggiungeremo il nostro nuovokollect
(in modo che i nomi non entrino in conflitto) al modulo Enumerable. Scorrendo la nostra collezione, applicheremo il blocco a ciascun elemento, aggiungendo il risultato restituito a un nuovo array che viene creato.
module Enumerabledef kollectnew_ary =self.each do |elem|new_ary << yield(elem)endnew_aryendend
Se si confronta questo per Ruby codice sorgente, che è essenzialmente la stessa cosa, ma è molto più semplice, perché stiamo lavorando con Ruby, e non C.
Utilizzando il nostro nuovo metodo Collect
Ora non resta che vedere se il kollect
metodo funziona davvero! Volevo provarlo usando sia la normale sintassi del blocco, ma anche la mano corta &:sintassi method_name, per garantire che entrambi funzionino.
Grande! In entrambi i casi prende i nomi nell’Array e li converte in maiuscolo.