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