Articles

implementatie van Ruby's verzamelmethode

Ruby ’s verzamelmethode

Ruby’ s collect methode maakt deel uit van de Enumerable mixin; een mixin die zeer nuttige en krachtige methoden biedt voor het verzamelen van objecten. collect is een methode die ik de hele tijd gebruik en waarover ik onlangs in mijn artikel heb geschreven in het werken met enumerables: vier krachtige verzamelmethoden.

collect Hiermee kunt u elk element van uw collectieobject (Array, Hash, of uw eigen object) omzetten in iets anders, eindigend met een Array.

Hier is een eenvoudig voorbeeld van het nemen van een Array van gehele getallen en het vermenigvuldigen van elk van hen met 2.

.collect{ |num| num * 2 }
#

herimplementeren van de verzamelmethode

Ik wilde mijn eigen collect methode maken om te zien hoe deze wordt geïmplementeerd. Het blijkt dat het vrij gemakkelijk wordt gedaan, in ongeveer 5 regels code. Ik moet zeggen dat de ene use-case die ik niet dekken is wanneer er geen blok wordt doorgegeven aan de methode, in welk geval een Enumerator meestal wordt geretourneerd.

we voegen onze nieuwe kollect (zodat de namen niet conflicteren) toe aan de Enumerable module. Als we door onze collectie lopen, passen we het blok toe op elk element en voegen we het geretourneerde resultaat toe aan een nieuwe Array die wordt gemaakt.

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

als we dit vergelijken met Ruby ‘ s broncode, doet het in wezen hetzelfde, maar is het een stuk eenvoudiger omdat we met Ruby zelf werken, en niet C.

met behulp van onze nieuwe Collect methode

nu is het enige dat overblijft is om te zien of de kollect methode werkt! Ik wilde het proberen met behulp van zowel de normale blok syntaxis, maar ook de short-hand &:method_name syntaxis, om ervoor te zorgen dat beide werken.

geweldig! In beide gevallen neemt het de namen in de Array en zet ze om in hoofdletters.