CH05-L04 · praktické použitie

Makro map()

Prevediete každú položku vstupného zoznamu na novú hodnotu.

Všeobecný CELSpustiteľné tuZdokumentované
Čo sa naučím?

Viete použiť map() na transformáciu a odlíšiť ju od výberu položiek pomocou filter().

Kde si to vyskúšam?

Priamo nižšie v skúšobnom prostredí prehliadača.

Čo mám urobiť?

Spustite oba režimy, porovnajte pôvod ich hodnôt a potom dokončite úlohu.

Vyskúšajte CEL · pilot v prehliadači

Vyskúšajte oba spôsoby zadania hodnôt

Lokálne hodnoty môžete definovať v jednom výraze CEL alebo môžete premenné zadať ako vstup JSON. Všetko sa vykonáva vo vašom prehliadači.

Pilotná podmnožina CEL
Jeden samostatný výraz CELFunkcia cel.bind() priradí hodnote lokálny názov a vráti výsledok posledného výrazu.

cel.bind()cel.bind() je voliteľné oficiálne rozšírenie. Nie je súčasťou jadra jazyka CEL a hostiteľská aplikácia ho nemusí podporovať.

Tip: výraz spustíte aj klávesmi Ctrl/⌘ + Enter.
Výsledok

Aktívny príklad vyhodnotíte tlačidlom Spustiť CEL.

Rozsah pilotu: literály, explicitné konverzie, lokálne premenné vytvorené pomocou cel.bind(), premenné z JSON, zoznamy, mapy, prítomnosť, kolekčné makrá, základné kontroly reťazcov, časové hodnoty, aritmetika, porovnávanie, logika a podmienený operátor.

Č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

  1. Prvá cena sa zmení na 2.5 * 2.0 = 5.0.
  2. Rovnaká transformácia sa vykoná pre ostatné ceny.
  3. Výsledkom je [5.0, 8.0, 13.0].

Vaša úloha

  1. Spustite príklad.
  2. Zmeňte násobiteľ na 1.2.
  3. Nahraďte transformáciu výrazom price >= 4.0 a 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šírenia cel.bind() použitého v samostatnej záložke.