CH01-L03 · základy

Operátory a logika

Spojíte porovnanie, členstvo v zozname a logickú podmienku.

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

Viete rozdeliť zloženú podmienku na menšie časti a overiť každú z nich.

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

Výraz obsahuje dve samostatné otázky. Operátor in overí, či sa hodnota role zhoduje s položkou zoznamu. Operátor && potom vyžaduje, aby tento výsledok aj hodnota active boli true. CEL používa skrátené vyhodnotenie: ak je ľavá strana && nepravdivá, celý výsledok je už známy.

Prečítajte pripravený príklad

Pravidlo v režime CEL + JSON je:

role in ['editor', 'admin'] && active

Jeho vstup je:

{
  "role": "editor",
  "active": true
}

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. 'editor' in ['editor', 'admin'] vráti true.
  2. active má hodnotu true.
  3. Obe strany && sú pravdivé, preto je výsledok true.

Vaša úloha

  1. Spustite pôvodný výraz.
  2. Zmeňte role na viewer a vysvetlite nový výsledok.
  3. Vráťte editor, zmeňte active na false a výraz spustite znova.

Očakávané pozorovanie: Každá z týchto zmien spôsobí, že celý výraz vráti false.

Častá chyba

Ak podmienku čítate ako jedno dlhé súvetie, nevidíte, ktorá časť zlyhala. Pri hľadaní chyby vyhodnoťte každú stranu && samostatne.

Zobraziť vysvetlenie

Rola musí byť v povolenom zozname a active musí mať hodnotu true.

Kontrolná otázka

Čo musí platiť, aby celý výraz vrátil true?

Hlavná myšlienka

Zloženú logiku rozdeľte pri && a ||; každá časť musí mať jasný logický význam.

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.