Articles

Implementere Ruby ' S Samle Metode

Ruby Samle metode

Ruby collect metoden er en del Av Enumerable mixin; en mixin som gir svært nyttige og kraftige metoder for samling objekter. collect er en metode jeg bruker hele tiden og skrev nylig om i min artikkel Som Arbeider med enumerables: Fire kraftige samlingsmetoder.

collect lar deg forvandle hvert element i samlingsobjektet ditt (Array, Hash eller ditt eget objekt) til noe annet, og ende opp med En Matrise.

her er et enkelt eksempel på å ta En Rekke heltall og multiplisere hver av dem med 2.

.collect{ |num| num * 2 }
#

Re-implementere Innsamlingsmetoden

jeg ønsket å lage min egen collect metode for å se hvordan den implementeres. Det viser seg at det er gjort ganske enkelt, i ca 5 linjer med kode. Jeg burde si at den ene brukssaken jeg ikke dekker, er når ingen blokk sendes til metoden, i så fall returneres en Enumerator vanligvis.

Vi legger til vår nye kollect (slik at navnene ikke er i konflikt) til Den Nummererbare modulen. Looping gjennom vår samling, bruker vi blokken til hvert element, og legger til det returnerte resultatet til en ny Matrise som blir opprettet.

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

hvis vi sammenligner Dette Med ruby kildekode, det egentlig gjør det samme, men er mye enklere fordi vi jobber med Ruby selv, og Ikke C.

Ved hjelp av vår nye Samle metode

nå er alt som er igjen er å se om kollect metoden faktisk fungerer! Jeg ønsket å prøve det med både normal blokk syntaks ,men også korthånden &:method_name syntaks, for å sikre både arbeid.

Flott! I begge tilfeller tar det navnene i Arrayet og konverterer dem til store bokstaver.