CH07-L03 · praktické použitie

Prioritné rozhodovanie

Zapíšete zoradené pravidlá tak, aby prvá splnená vetva určila výsledok.

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

Viete vysvetliť poradie vetiev, krátke vyhodnotenie a spoločný návratový typ podmienok.

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ť

Prevediete zoradené požiadavky na vnorený podmienený výraz. Naučíte sa sledovať poradie vetiev a overiť, že všetky cesty vracajú zmysluplný výsledok rovnakého typu.

Ako to funguje

request.blocked
  ? 'blocked'
  : request.score >= 90.0
    ? 'priority'
    : request.score >= 70.0
      ? 'standard'
      : 'review'

CEL vyhodnotí podmienky zhora nadol. Keď nájde pravdivú podmienku, vyhodnotí iba jej výslednú vetvu. Neskoršie vetvy už výsledok nezmenia.

Rozhodovacia tabuľka

PoradiePodmienkaVýsledok
1request.blocked'blocked'
2request.score >= 90.0'priority'
3request.score >= 70.0'standard'
4žiadna predchádzajúca'review'

Pri skóre 82.0 a hodnote blocked: false je výsledok 'standard'.

Vaša úloha

  1. Spustite pripravený výraz.
  2. Nastavte blocked na true a skóre na 95.
  3. Vymeňte poradie hraníc 90.0 a 70.0 a vysvetlite nesprávny výsledok.

Očakávané pozorovanie: Blokovanie má vždy prednosť. Ak najprv skontrolujete nižšiu hranicu, vyššia vetva sa pre skóre 95 už nikdy nepoužije.

Častá chyba

Vnorené podmienky nie sú množina nezávislých pravidiel. Ich poradie je súčasťou významu výrazu.

Zobraziť vysvetlenie

Hodnota môže spĺňať viac podmienok naraz. Výsledok však určí prvá pravdivá podmienka, preto zapisujte špecifickejšie alebo dôležitejšie pravidlá skôr.

Kontrolná otázka

Prečo je vetva request.score >= 90.0 uvedená pred vetvou request.score >= 70.0?

Hlavná myšlienka

Vnorený podmienený výraz používajte ako prioritný rozhodovací strom a jeho poradie dokumentujte tabuľkou alebo jasným formátovaním.

Zdroje

  • CEL-DEV — oficiálny prehľad podmienených výrazov CEL.
  • CEL-LANG — oficiálna definícia podmieneného operátora a krátkeho vyhodnocovania.
  • CEL-GO-BIND — oficiálna dokumentácia voliteľného rozšírenia cel.bind() použitého v samostatnej záložke.