Articles

Implementing Ruby's Collect Method

Rubyn Collect method

Rubyn collect method on osa Enumerable mixin; mixin, joka tarjoaa erittäin hyödyllisiä ja tehokkaita menetelmiä kokoelmaesineille. collect on menetelmä, jota käytän koko ajan ja josta kirjoitin hiljattain artikkelissani enumerables: Four powerful collection methods.

collect voit muuttaa jokaisen kokoelma-objektisi elementin (Array, Hash, tai oma objektisi) joksikin muuksi, päätyen Array-muotoon.

tässä on yksinkertainen esimerkki kokonaislukujen joukon ottamisesta ja jokaisen kertomisesta 2: lla.

.collect{ |num| num * 2 }
#

keräysmenetelmän uudelleen käyttöön

halusin luoda oman collect-menetelmän nähdäkseni, miten se toteutetaan. On käynyt ilmi, että se tehdään melko helposti, noin 5 riviä koodia. Minun pitäisi sanoa, että yksi käyttötapaus En Kata on, kun mitään lohkoa siirretään menetelmään, jolloin Luetteloija yleensä palautetaan.

lisäämme uuden kollect (joten nimet eivät ole ristiriidassa) Luetteloitavaan moduuliin. Looping läpi meidän kokoelma, me sovelletaan lohko jokaiseen elementtiin, lisäämällä palautettu tulos uuteen Array, joka on luotu.

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

jos vertaamme tätä Rubyn lähdekoodiin, se tekee periaatteessa saman asian, mutta on paljon yksinkertaisempi, koska työskentelemme Rubyn kanssa itse, eikä C.

käyttämällä uutta Keräilymetodiamme

nyt on enää jäljellä vain se, toimiiko kollect menetelmä todella! Halusin kokeilla sitä sekä normaalilla lohkosyntaksilla, mutta myös lyhytkäden &:method_name syntaksi, varmistaa molemmat toimivat.

hienoa! Molemmissa tapauksissa se ottaa Nimet Array ja muuntaa ne suuraakkoset.