Čo budete robiť
Pripravený výraz spustíte v cvičisku vyššie, budete meniť vždy jeden vstup a vysvetlíte výsledok. Začnite v režime Iba CEL a potom rovnaké pravidlo zopakujte v režime CEL + JSON.
Ako to funguje
map() vykoná transformáciu pre každú položku a vráti zmenené výsledky v rovnakom poradí. Výsledkom je vždy zoznam. Na rozdiel od filter() nerozhoduje, ktoré položky zostanú; určuje novú hodnotu každej výstupnej položky.
Prečítajte pripravený príklad
Pravidlo v režime CEL + JSON je:
prices.map(price, price * 2.0)Jeho vstup je:
{
"prices": [2.5, 4, 6.5]
}Záložka Iba CEL obsahuje hodnoty aj pravidlo v jednom výraze. Povolené rozšírenie cel.bind() udrží každý názov lokálny v jeho poslednom argumente.
Vyhodnotenie krok za krokom
- Prvá cena sa zmení na
2.5 * 2.0 = 5.0. - Rovnaká transformácia sa vykoná pre ostatné ceny.
- Výsledkom je
[5.0, 8.0, 13.0].
Vaša úloha
- Spustite príklad.
- Zmeňte násobiteľ na
1.2. - Nahraďte transformáciu výrazom
price >= 4.0a pozrite si zoznam logických hodnôt.
Očakávané pozorovanie: Transformácia môže vrátiť ľubovoľný podporovaný typ; posledný pokus vráti jednu logickú hodnotu pre každú cenu.
Častá chyba
Neočakávajte, že map() s logickým výrazom odstráni nepravdivé položky. Vráti tieto logické hodnoty.
Zobraziť vysvetlenie
Áno. Každá výstupná pozícia zodpovedá rovnakej vstupnej pozícii.
Kontrolná otázka
Zachová map() poradie vstupu?
Hlavná myšlienka
Na transformáciu každej položky použite map(), na výber položiek filter().
Zdroje
CEL-DEV— oficiálny prehľad CEL.CEL-LANG— oficiálna definícia jazyka CEL.CEL-GO-BIND— oficiálna dokumentácia voliteľného rozšíreniacel.bind()použitého v samostatnej záložke.