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