• Články
  • Snížení počtu - 1. část: Cesta začíná
Vloženo na 28-09-2019

Snížení počtu - 1. část: Cesta začíná

Snímek nadpisu pro téma „Redukce enumerable - an Illustrated Adventure“

Spatřit! Lemuři se rozhodli, že se objeví na textovém médiu a přinesou s sebou veškerý ilustrovaný obsah z „Reducing Enumerable - An Illustrated Adventure“.

Pokud si chcete prohlédnout celou verzi přednášky RubyConf, najdete ji zde:

Protože se jednalo o prezentaci velmi náročnou na obrázky a příběh, rozdělíme ji do několika článků, aby byla lépe stravitelná.

Obsah

  1. Cesta začíná
  2. Chartreuse - Mistr mapy
  3. Indigo - Master of Select
  4. Violet - Master of Find
  5. Cerulean - Master of Tally By
  6. Závěrečná lekce od Scarlet

Další >>

Seznamte se s červenou

Červená mává ahoj

Meet Red, lemur. Je studentem velkého mistra Scarleta, který se učí způsoby, jak ho redukovat.

Už nějakou dobu praktikuje sčítání čísel a učení způsobů funkčního programování.

Do této chvíle věří, že je na to docela zběhlý, pokud není připraven se pokusit o mistrovské zkoušky sám.

Červená s kladivem, přemýšlet o redukci věcí

Nyní Red absolutně zbožňuje snížit, a zejména snížení velkých hromádek čísel na jednoduché součty. Ve skutečnosti se mu to docela dobře povedlo.

Red sní o snížení velkých hromádek čísel

Ve skutečnosti je tak dobrý, že je tím spíše posedlý a rád by nám ukázal základy toho, jak funguje redukce. Podíváme se?

Pohled do redukce

Nyní redukovat je velmi zajímavá funkce v Enumerable, a velmi často je těžké pochopit, co to dělá.

Pojďme se trochu podívat, jak to funguje.

seznam 1, 2 a 3 částek až 6

Snížit, v případě součtu, vezme seznam čísel a vrátí zpět součet těchto čísel.

[1,2,3] redukce (0) {| a, v | a + v} # => 6

Kód pro to může vypadat něco takového, ale to je trochu těžké pochopit, takže si to trochu rozdělíme, že?

Akumulátory

Při pohledu na akumulátor 0 představoval jako funkci ve funkci a vrátil se s hodnotou 6

Začínáme s akumulátorem. Akumulátor začíná jako první argument ke snížení, v tomto případě je to 0. Proč 0? Přidáme-li něco k 0, dostaneme zpět toto číslo. Díky tomu je dobrý „prázdný“ prvek.

Když je seznam prázdný, vrátíme zpět náš prázdný prvek!

Uvidíme, jak se náš akumulátor zobrazí v celém tomto článku.

Seznamy a hodnoty

Při pohledu na seznam 1, 2 a 3 reprezentovaný ve funkci ve funkci

Další je náš seznam, který se v tomto článku zobrazí jako v. Každý prvek v našem seznamu bude opakován, zatímco se zmenší, přejde do funkce jako v.

Spojení hodnot a akumulátorů

Při pohledu na operátora plus se připojil k akumulátoru a na hodnotu k vytvoření nového akumulátoru

Poslední, a co je nejdůležitější, je to, jak se spojíme s naší hodnotou a našim akumulátorem, abychom vytvořili nový akumulátor. V tomto případě +.

Nyní je zajímavé, že to, jak spojujeme věci, ovlivňuje také naši prázdnou hodnotu. Pokud by naše údajná prázdná hodnota byla 0, ne?

[1, 2, 3] .reduce (0) {| a, v | a * v}
=> 0

Vždy se vrátí 0! Místo toho bychom chtěli použít 1 pro toto konkrétní párování.

Teď všichni společně

0 + 1, 2, 3

Takže spolu můžeme mít něco, co vypadá trochu takto. Redukcí seznamu 1, 2, 3 na počáteční hodnotu 0 pomocí + spojíte hodnoty dohromady.

Častěji by to mohlo vypadat takto:

0 + 1 + 2 + 3

Ale jak přesně to funguje? Jak můžeme sledovat tok dat? Pojďme se na to podívat.

Jak snížit redukuje

Každý krok snížení, jak je vysvětleno v níže uvedeném textu

Pro každou smyčku redukce přecházíme do funkce náš akumulátor a naši další hodnotu. Všechno, co se vrátí z této funkce, se stane novým akumulátorem při příštím spuštění redukce.

  1. Začínáme s počáteční hodnotou 0 a přidáme k ní 1, což nám dá nový akumulátor 1.
  2. To znamená, že další smyčka začíná 1 a přidáme k ní další hodnotu v našem seznamu, 2, což nám 3.
  3. Na naší poslední smyčce máme akumulátor 3 a poslední hodnotu 3.
  4. Teď, když došlo k redukci, došlo ke snížení počtu a vrací konečný akumulátor, který měl. V tomto případě je naše odpověď 6.

Co je to Reduce?

Vysvětlení základních prvků redukce, jak je uvedeno v textu níže

Redukce je způsob, jak vzít seznam mnoha věcí a redukovat je na jednu věc pomocí počáteční hodnoty, a způsob, jak spojit hodnoty dohromady a vytvořit nový akumulátor.

Mistři funkčního programování

Červené snění o sobě jako o moudrém pánovi s velkými schopnostmi

Teď se z nás jistě stávají mistři funkčního programování, pijáci pramenů znalostí, moudrý za našimi roky a mocný nad smrtelným zúčtováním! Plná moc Ruby je na dosah ruky a nic nás nemůže zastavit!

No, až na jednu věc ...

Enumerable # sum

[1,2,3] .číslo # => 6

Ruby 2.4+ představil novou funkci, součet, která dělá totéž.

Uvědomit si to, Red je znatelně rozrušený. Všechno, co se od nynějška naučil, se zdálo, že tváří v tvář této nové funkci je zcela irelevantní, což ho přimělo položit velmi těžkou otázku:

Je snížení zbytečné?

Bylo to zbytečné? Rozhodl se jít k jednomu zdroji, o kterém věděl, že bude mít odpověď na jeho otázku, jeho mistra Scarlet.

Žádám o pomoc

Red napsal dopis a ptal se jí prostě:

Červené psaní dopisu mistrovi: „Snižuje se částka zabití? - Červené

Snižuje se suma kill? Když byl dopis poslán, Red začal tempo a dychtivě čekal na odpověď. Nakonec přišlo, jeho pán odpověděl na jeho dopis!

Červená obdržela zapečetěnou obálku od svého pána.

… A uvnitř dopisu bylo řečeno jednoduše: „Pojďte ke mně, pokud se chcete učit“.

S tím se Red rozhodl, že je čas jít na dobrodružství.

Cesta k Master Scarlet

Červená cesta za svým pánem, jak je vysvětleno níže v textu.

Red se tedy vydával skrz pláně a přes kopce, do hor kolem lesů a potoků, a tam před ním byl znak. Značka ukazovala na hrad jeho pána, zastrčený za mraky, vysoko nad horskými pokukami.

Kolem toho obíhaly obří světelné koule, jako by pozvaly ty, kteří se odvážili najít ji.

S tím Red přitlačil a vstoupil na hrad.

Mistryně Scarlet

Red vysvětlil svou tíživost svému pánovi.

Red se tedy setkala s mistrem Scarletem na jejím zámku a začala jí říkat o všech věcech, které se naučil a udělal ve své době od odchodu. Hodně se naučil a rostl, ale přesto měl pocit, že něco chybí, něco, co mu mohla ukázat, a tak se zeptala Red:

„Moudrý pán, snižuje to částku zbytečně?“ Zeptal se Red.

Scarlet poučná červená

"Ah, červená." Zvažte na chvíli možná, že můžete udělat víc, než jen shrnout s redukcí. Co kdybychom použili odčítání? Násobení? Divize? Co když vůbec nepoužíváme čísla? “Odpověděla Scarlet.

Scarlet ukazuje červenou prázdné pole a spojovací funkci, stiskni

"Možná místo toho máme prázdné pole a snažíme se do něj přidat prvky." Co s tím můžeme dělat? “Zeptal se Scarlet.

Scarlet posílá Reda na dobrodružství

"Já vím jen tu věc. V zemi Enumerable najdete tři pány. Jděte ven a učte se od nich o jejich funkcích a zjistěte, zda můžete zjistit, jak můžete použít redukci k tomu samému. “

Díky tomu Scarlett nechala Reda hodně přemýšlet a mapu, která mu na jeho cestě pomohla.

Do země enumerable

Červená při pohledu na mapu, při pohledu na celou zemi enumerable

S tím byl pryč do rohů mapy, aby se učil od pánů, které tam našel. Země Enumerable byla obrovským místem, plným překvapení a zvědavostí, ale s pomocí svého pána a jeho věrné mapy našel Red přesně to, co potřeboval.

Červená s zblízka mapy s cestou nakreslenou na „mapu“

První mistr Red, který měl potkat, byl mistr Map, Chartreuse.

Další >>

Viz též

5 věcí, které musíte udělat, abyste vytvořili kvalitní blogový příspěvekSociální média a digitální přehledArt 011-Art Model Důvěrné Hippie CultDítě zázraky, vládce, depresivní vizuální génius: Pohled na umění Pabla PicassaJak truchlit "čarodějnici"Recenze: Raúl Esparza hraje v nesmírně relevantním „Arturo Ui“