Č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
Konverzné funkcie robia zmenu typu viditeľnou. int(rawScore) prečíta platný číselný reťazec a vráti celé číslo; type(...) vráti hodnotu typu CEL. Konverzia nie je automatická validácia: int("osemdesiatšesť") je neplatné a vyhodnotenie skončí chybou.
Prečítajte pripravený príklad
Pravidlo v režime CEL + JSON je:
type(int(rawScore)) == int && int(rawScore) >= 80Jeho vstup je:
{
"rawScore": "86"
}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
int("86")vytvorí celé číslo86.type(86) == intmá hodnotutrue.86 >= 80je tiežtrue, preto je konečný výsledoktrue.
Vaša úloha
- Spustite príklad.
- Zmeňte
rawScorena"79"a výraz spustite znova. - Zmeňte ho na
"high", prečítajte si chybu a potom hodnotu obnovte.
Očakávané pozorovanie: "79" vráti false; hodnotu "high" nemožno previesť na int.
Častá chyba
Opakovaná konverzia je vhodná v krátkej ukážke, ale hostiteľ má bežne dodávať správne typované údaje. cel.bind() používajte iba tam, kde je toto rozšírenie povolené.
Zobraziť vysvetlenie
Nie. Neplatná konverzia je chyba vyhodnotenia.
Kontrolná otázka
Vráti int(rawScore) hodnotu 0, keď je reťazec neplatný?
Hlavná myšlienka
Konvertujte explicitne a neplatný zdrojový údaj riešte ako chybu, nie ako vymyslenú náhradnú hodnotu.
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.