Articles

implementera Ruby 's Collect Method

Ruby ’s Collect method

Ruby’ s collect metoden är en del av den uppräknade mixin; en mixin som ger mycket användbara och kraftfulla metoder för samlingsobjekt. collect är en metod som jag använder hela tiden och nyligen skrev om i min artikel som arbetar med enumerables: fyra kraftfulla insamlingsmetoder.

collect låter dig omvandla varje element i ditt samlingsobjekt (Array, Hash eller ditt eget objekt) till något annat och slutar med en Array.

Här är ett enkelt exempel på att ta en rad heltal och multiplicera var och en av dem med 2.

.collect{ |num| num * 2 }
#

Re-implementing the Collect method

Jag ville skapa min egen collect metod för att se hur den implementeras. Det visar sig att det görs ganska enkelt, i cirka 5 rader kod. Jag borde säga att det enda användningsfallet jag inte täcker är när inget block skickas till metoden, i vilket fall en Enumerator vanligtvis returneras.

vi lägger till vårt nya kollect (så namnen strider inte) till den uppräknade modulen. Looping genom vår samling, vi tillämpar blocket på varje element och lägger till det returnerade resultatet till en ny Array som skapas.

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

om vi jämför detta med Rubys källkod, gör det i huvudsak samma sak, men är mycket enklare eftersom vi arbetar med Ruby själv, och inte C.

med vår nya Insamlingsmetod

nu är allt som är kvar att se om kollect metoden faktiskt fungerar! Jag ville prova det med både den normala blocksyntaxen, men också den korta handen &:metod_name syntax, för att säkerställa både arbete.

bra! I båda fallen tar det namnen i matrisen och konverterar dem till versaler.