Č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
Operátor in odpovedá na otázku členstva. Pri zozname porovná ľavú hodnotu s položkami; pri mape overí kľúč. Funkcia size() vráti počet položiek. Dve kontroly v príklade sú samostatné a spája ich &&.
Prečítajte pripravený príklad
Pravidlo v režime CEL + JSON je:
role in allowedRoles && allowedRoles.size() == 2Jeho vstup je:
{
"role": "editor",
"allowedRoles": ["editor", "admin"]
}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
role in allowedRolesje pre"editor"pravda.allowedRoles.size() == 2je tiež pravda.- Spojený výsledok je
true.
Vaša úloha
- Spustite výraz.
- Pridajte do zoznamu
"viewer"bez zmeny== 2. - Zmeňte očakávanú veľkosť na 3 a výraz spustite znova.
Očakávané pozorovanie: Po pridaní položky kontrola veľkosti zlyhá, kým neupravíte očakávaný počet.
Častá chyba
in nie je operátor na hľadanie časti reťazca. Na hľadanie v texte použite contains().
Zobraziť vysvetlenie
Overí, či mapa obsahuje kľúč "editor".
Kontrolná otázka
Čo overí výraz "editor" in {"editor": true}?
Hlavná myšlienka
Operátor in používajte na členstvo v kolekcii a size() na počet položiek; tieto významy oddeľujte.
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.