Č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
| Poradie | Podmienka | Výsledok |
|---|---|---|
| 1 | request.blocked | 'blocked' |
| 2 | request.score >= 90.0 | 'priority' |
| 3 | request.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
- Spustite pripravený výraz.
- Nastavte
blockednatruea skóre na95. - Vymeňte poradie hraníc
90.0a70.0a 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šíreniacel.bind()použitého v samostatnej záložke.