Articles

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 Enumerable
def kollect
new_ary =
self.each do |elem|
new_ary << yield(elem)
end
new_ary
end
end

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.