Курс по Raku / Функционално, паралелно, реактивно и уеб програмиране / Реактивно програмиране / react и whenever
whenever и when
Формата на блока react може да изглежда позната. Външен
блок, съдържащ няколко вътрешни блока, всеки от които действа върху
темата $_, е точно начинът, по който се записва given/when.
Ако имахте едно-единствено показание за температура вместо цяла струя от
такива, бихте разклонили по него така:
given $temperature {
when 18 { say 'cool' }
when 21 { say 'warm' }
}Приликата с react/whenever е истинска, но
двете вършат съвсем различна работа:
given/whenобработва една стойност, точно сега.givenзадава$_на една стойност; всекиwhenя проверява ($_ ~~ 18), изпълнява се първото съвпадение и блокът приключва. Това е обикновено синхронно условие.react/wheneverобработва много стойности, във времето.wheneverне проверява$_срещу образец — той се абонира за поток, а тялото му се изпълнява за всяка стойност, която този поток подаде, когато и да пристигне тя. Всичкиwheneverса живи наведнъж, аreactпродължава да блокира, докато всеки от техните потоци не приключи.
Значи when пита „съвпада ли тази една стойност?“, докато
whenever казва „за всяка стойност, която тази струя някога
произведе, направи това“. Един и същ скелет, съвсем различен живот:
клон, поет един-единствен път, срещу реакция, която се изпълнява отново
и отново, докато пристигат събития.
Навигация в курса
← Supply, дефинирани отвън | Два таймера →
💪 Или преминете направо към упражненията в този
раздел.