Articles

Implementieren von Ruby's Collect-Methode

Rubys Collect-Methode

Rubys collect Methode ist Teil des aufzählbaren Mixins; ein Mixin, das sehr nützliche und leistungsstarke Methoden für Sammlungsobjekte bereitstellt. collect ist eine Methode, die ich ständig verwende und über die ich kürzlich in meinem Artikel Working with enumerables: Four powerful collection methods .

collect ermöglicht es Ihnen, jedes Element Ihres Sammlungsobjekts (Array, Hash oder Ihr eigenes Objekt) in etwas anderes umzuwandeln und am Ende ein Array zu erhalten.

Hier ist ein einfaches Beispiel, wie man ein Array von ganzen Zahlen nimmt und jedes von ihnen mit 2 multipliziert.

.collect{ |num| num * 2 }
#

Erneute Implementierung der Collect-Methode

Ich wollte meine eigene collect -Methode erstellen, um zu sehen, wie sie implementiert ist. Es stellt sich heraus, dass dies in etwa 5 Codezeilen recht einfach ist. Ich sollte sagen, dass der einzige Anwendungsfall, den ich nicht behandle, darin besteht, dass kein Block an die Methode übergeben wird.

Wir fügen unser neues kollect (damit die Namen nicht in Konflikt stehen) zum aufzählbaren Modul hinzu. Wenn wir unsere Sammlung durchlaufen, wenden wir den Block auf jedes Element an und fügen das zurückgegebene Ergebnis einem neuen Array hinzu, das erstellt wird.

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

Wenn wir dies mit Rubys Quellcode vergleichen, macht es im Wesentlichen dasselbe, ist aber viel einfacher, weil wir mit Ruby selbst arbeiten und nicht mit C.

Mit unserer neuen Collect-Methode

Jetzt bleibt nur noch zu sehen, ob die kollect -Methode tatsächlich funktioniert! Ich wollte es sowohl mit der normalen Blocksyntax als auch mit der Kurzhand &:method_name Syntax, um sicherzustellen, dass beide funktionieren.

Großartig! In beiden Fällen werden die Namen im Array verwendet und in Großbuchstaben konvertiert.