• У дома
  • статии
  • Намаляване на изброените - първа част: Пътешествието започва
публикувано на 28-09-2019

Намаляване на изброените - първа част: Пътешествието започва

Заглавие слайд за „Намаляване на многобройни - илюстровано приключение“

Ето! Лемурите са избрали да се появят на текстово-базиран носител, носейки със себе си цялото илюстровано съдържание от „Намаляване на изброяващото - илюстровано приключение“.

Ако искате да видите пълната версия на разговора на RubyConf, можете да го намерите тук:

Тъй като това беше много интензивно изображение и ориентирано към историята представяне, ние ще го разделим на няколко статии в името на усвояемостта.

Съдържание

  1. Пътешествието започва
  2. Chartreuse - капитанът на картата
  3. Индиго - Господарят на селекцията
  4. Виолет - Майсторът на Находката
  5. Серулеан - Майсторът на Tally By
  6. Заключителен урок от Скарлет

Следващ >>

Запознайте се с Червено

Червено размахване здрасти

Запознайте се с Red, лемура. Той е ученик на великия Учител Скарлет, научава начините за намаляване.

Той тренира от доста дълго време за сумиране на числа и усвояване на начините на функционално програмиране.

Към този момент той вярва, че е доста умел в това, ако не е готов сам да опита магистърските изпитания.

Червено с чук, мислейки за намаляване на нещата

Сега Red абсолютно обожава да намалява и най-вече да намалява големите купчини цифри в прости суми. Всъщност той е доста добър в това.

Червено мечтае за намаляване на големи стекове от числа

Толкова добър всъщност, че е доста обсебен от него и би искал да ни покаже основите на това как намалява работата. Ще погледнем ли?

Поглед в намаление

Сега редукцията е много интересна функция в „Изброяващо“ и много често е трудно да разберем какво прави.

Нека да разгледаме малко как работи.

списък от 1, 2 и 3 суми до 6

Намалете, в случай на сума, вземете списък от числа и върнете обратно сумата от тези числа.

[1,2,3] .редуциране (0) {| a, v | a + v} # => 6

Кодът за това може да изглежда нещо подобно, но това е малко трудно да се разбере, така че нека го разбием малко, нали?

Акумулатори

Поглеждайки към акумулатора 0, представен като a във функцията и върнат със стойността 6

Започваме с акумулатор. Акумулаторът започва като първи аргумент за намаляване и в този случай е 0. Защо 0? Ако добавим нещо към 0, получаваме обратно това число. Това го прави добър „празен“ елемент.

Когато списъкът е празен, връщаме празния си елемент!

Ще видим, че нашият акумулатор се показва в цялата тази статия.

Списъци и ценности

Разглеждайки списъка с 1, 2 и 3, представени като v във функцията

Следващ е нашият списък, който ще се показва като v в тази статия. Всеки елемент от нашия списък ще бъде повторен, докато намалява, влизайки във функцията като v.

Присъединяване на ценности и акумулатори

Гледайки оператора плюс, използван за присъединяване към акумулатор и стойност за създаване на нов акумулатор

Последно и може би най-важното е как да се присъединим към нашата стойност и нашия акумулатор заедно, за да направим нов акумулатор. В този случай +.

Сега интересното е, че как се присъединяваме към нещата заедно, се отразява и на нашата празна стойност. Ще бъде много малко смисъл да се присъединяваме към всяко число с умножение, ако нашата уж празна стойност е 0, не ?:

[1, 2, 3] .намаляване (0) {| a, v | a * v}
=> 0

Винаги ще връща 0! Вместо това бихме искали да използваме 1 за това конкретно сдвояване.

Всички заедно сега

0 + 1, 2, 3

Така че всички заедно може да имаме нещо, което изглежда малко така. Намаляване на списъка от 1, 2, 3 до началната стойност 0, използвайки + за обединяване на стойности заедно.

По-често това може да изглежда така:

0 + 1 + 2 + 3

Но как точно работи? Как да проследим този поток от данни? Нека да разгледаме това.

Как намалява намалява

Всяка стъпка на намаление, както е обяснено в текста по-долу

За всеки цикъл на намаляване ние преминаваме във функцията на нашия акумулатор и следващата ни стойност. Каквото и да е върнато от тази функция, става новият акумулатор при следващото изпълнение на намалението.

  1. Започваме с първоначална стойност 0 и добавяме 1 към нея, което ни дава нов акумулатор от 1.
  2. Това означава, че следващият цикъл започваме с 1 и добавяме към него следващата стойност в нашия списък, 2, като ни дава 3.
  3. На последния ни цикъл имаме акумулатор 3 и последна стойност 3.
  4. Сега, когато намалението е изчерпало числата, така че, да се намали, връща последния акумулатор, който имаше. В този случай отговорът ни е 6.

Какво е Намаляване?

Обясняване на основните елементи на намаляване, както е посочено в текста по-долу

Намаляването е начин да вземете списък с много неща и да го намалите в едно, като използвате първоначална стойност и начин да обедините стойности заедно, за да направите нов акумулатор.

Майстори на функционалното програмиране

Червено мечтае за себе си като мъдър господар с велики сили

Със сигурност сега това ни прави господари на функционалното програмиране, пиячи на изводите на знанието, мъдри отвъд нашите години и мощни отвъд смъртното смятане! Пълните сили на Руби са на една ръка разстояние и нищо не може да ни спре!

Е, с изключение на едно нещо ...

Enumerable # сума

[1,2,3] .sum # => 6

Ruby 2.4+ въведе нова функция, сума, която прави почти същото.

Осъзнавайки това, Червеното е забележимо разсеяно. Всичко, което беше научил от преди, изглеждаше абсолютно ирелевантно пред тази нова функция, което го накара да зададе много тежък въпрос:

Намаляването ли е ненужно?

Беше ли ненужно намалението? Той реши да отиде при един източник, за когото знаеше, че ще има отговор на въпроса му - господаря си Скарлет.

Моля за помощ

Ред написа писмо и я попита съвсем просто:

Червено писмо до майстор: „Сумата убива ли намалява? - Червен

Намалява ли сумата убийства? С изпратеното писмо Ред започна да бърза и чака с нетърпение отговор. Накрая дойде, господарят му отговори на писмото си!

Червен получи запечатан плик от господаря си.

… А вътре в писмото пишеше просто: „Ела при мен, ако искаш да се учиш“.

С това Ред реши, че е време да продължи на приключение.

Пътуване до майстор Скарлет

Червено пътува да види господаря си, както е обяснено по-долу в текста.

Така Червеният се впусна през равнините и през хълмовете, в планините покрай горите и реките, а там пред него имаше знак. Знакът сочи замъка на господаря си, прибран зад облаците, високо над планинските надничащи.

Около нея кръжаха гигантски топки светлина, сякаш да поканят онези, които се бяха осмелили да я намерят.

С това Червено натисна и влезе в замъка.

Господар Скарлет

Ред обясняваше затрудненията си на господаря си.

Така Ред срещнал майстора Скарлет в замъка й и започнал да й разказва за всички неща, които е научил и направил в своето време от напускането си. Беше научил много и порасна, но все пак имаше чувството, че нещо липсва, нещо само тя можеше да му покаже, затова Ред попита:

„Мъдър господарю, намалява ли сумата безполезно?“, Попита Ред.

Червено просветляващо червено

- Ах Ред. Помислете за момент може би, че можете да направите нещо повече от обобщаване с намаление. Ами ако използваме изваждане? Умножение? Division? Ами ако изобщо не използваме номера? ”Отговори Скарлет.

Scarlet показва червен празен масив и присъединителна функция, натиснете

„Може би вместо това имаме празен масив и натиснете, за да добавите елементи към него. Какво би могъл човек да направи с това? “Попита Скарлет.

Пурпурно изпращане на Червено на приключение

„Знам точно това. Ще намерите трима майстори в земята на Безброй. Излезте и се научете от тях за техните функции и вижте дали можете да разберете как можете да използвате намаляване, за да направите същото. “

С това Скарлет остави на Ред много да мисли и карта, която да му помогне по пътя му.

В земята на безбройните

Червен поглед към картата, гледащ цялата земя на Безброй

С това той тръгна към ъглите на картата, за да се поучи от майсторите, които ще намери там. Земята на Enumerable беше огромно място, пълно с изненади и любопитства, но с помощта на своя господар и неговата достоверна карта, Red ще намери точно това, от което се нуждае.

Червено с близък план на картата с пътека, изчертана до „карта“

Първият майстор, който Червеният срещна, беше майсторът на Картата, Шартреуза.

Следващ >>

Вижте също

5 неща, които трябва да направите, за да създадете качествена публикация в блогаСоциалните медии и дигиталният погледEult Hippie Cult 011-Art Model ПоверителноДетски блудство, нарушител на правилата, депресивен визуален гений: Поглед към изкуството на Пабло ПикасоКак да оплакваме „вещица“Ревю: Раул Еспарза звезди в ужасно подходящ „Arturo Ui“