CH06-L04 · praktické použitie

Od textu k výsledku

Spojíte syntax, typy a vstupné údaje do celého procesu vyhodnotenia.

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

Viete pomenovať, čo kontroluje CEL a čo musí definovať hostiteľská aplikácia.

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

Hostiteľ CEL najprv spracuje zdrojový text, skontroluje ho voči deklarovaným premenným a typom a potom ho vyhodnotí s konkrétnymi hodnotami. Hostiteľ rozhoduje, ktoré premenné, funkcie, makrá a voliteľné rozšírenia existujú. CEL poskytuje význam výrazu; údaje aplikácie sám nevyhľadáva.

Prečítajte pripravený príklad

Pravidlo v režime CEL + JSON je:

type(request.priority) == string && request.priority in ['low', 'high']

Jeho vstup je:

{
  "request": {
    "priority": "high"
  }
}

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. Hostiteľ poskytne mapu request s reťazcovou položkou priority.
  2. Kontrola typu potvrdí string.
  3. Členstvo v povolenom zozname je pravdivé, preto celý výraz vráti true.

Vaša úloha

  1. Spustite oba režimy.
  2. Zmeňte prioritu na "medium".
  3. Odstráňte priority, pozrite si chybu a určte, či ide o syntax, deklaráciu alebo vstup pri vyhodnotení.

Očakávané pozorovanie: "medium" má správny typ, ale nie je povolené; chýbajúca položka je problém vstupu alebo prítomnosti, nie syntaxe.

Častá chyba

Nepredpokladajte, že výraz spustiteľný v tomto cvičisku bude mať rovnaké premenné a rozšírenia v každom hostiteľovi CEL. Overte konfiguráciu cieľového hostiteľa.

Zobraziť vysvetlenie

Deklaruje a poskytuje ju hostiteľská aplikácia; CEL iba vyhodnotí výraz voči tejto hodnote.

Kontrolná otázka

Kto definuje význam a dostupnosť premennej request?

Hlavná myšlienka

Oddeľujte pravidlá jazyka od konfigurácie hostiteľa: spracujte výraz, skontrolujte názvy a typy a potom ho vyhodnoťte s dodanými údajmi.

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.