Prováděcí Ruby'y Sbírat Metoda
Ruby je Sbírat metoda
Ruby collect
metoda je součástí Enumerable mixin; mixin, který poskytuje velmi užitečné a výkonné způsoby výběru objektů. collect
je metoda, používám celou dobu a nedávno napsal o tom ve svém článku Pracuje s enumerables: Čtyři výkonné metody sběru.
collect
umožňuje transformovat každý prvek kolekce objektů (Array, Hash, nebo vlastní objekt) na něco jiného, končí s Pole.
zde je jednoduchý příklad, jak vzít pole celých čísel a vynásobit každé z nich 2.
.collect{ |num| num * 2 }#
opětovné zavedení metody Collect
chtěl jsem vytvořit vlastní metodu collect
, abych viděl, jak je implementována. Ukazuje se, že se to děje poměrně snadno, asi v 5 řádcích kódu. Měl bych říct, že jeden use-case nemyslím, kryt je, když není blok, je předán do metody, v takovém případě Výčtu je obvykle vrácena.
přidáme náš nový kollect
(takže názvy nejsou v rozporu) do výčtu modulu. Když procházíme naší sbírkou, použijeme blok na každý prvek a přidáme vrácený výsledek do nového vytvořeného pole.
module Enumerabledef kollectnew_ary =self.each do |elem|new_ary << yield(elem)endnew_aryendend
Pokud porovnáme to, že Ruby je zdrojový kód, je to v podstatě dělá to samé, ale je mnohem jednodušší, protože pracujeme s Ruby sám, a ne C.
Pomocí naší nové Sbírat metoda
Nyní vše, co zbývá, je zjistit, jestli kollect
metoda skutečně funguje! Chtěl jsem to zkusit pomocí normální syntaxe bloku, ale také krátké ruky &:syntaxe názvu metody, aby byla zajištěna práce obou.
skvělé! V obou případech vezme jména v poli a převede je na velká písmena.