Č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'] && activeJeho 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
'editor' in ['editor', 'admin']vrátitrue.activemá hodnotutrue.- Obe strany
&&sú pravdivé, preto je výsledoktrue.
Vaša úloha
- Spustite pôvodný výraz.
- Zmeňte
rolenaviewera vysvetlite nový výsledok. - Vráťte
editor, zmeňteactivenafalsea 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šíreniacel.bind()použitého v samostatnej záložke.