CH02-L03 · základy

Konverzie a kontrola typu

Prevediete textové číslo na int a overíte typ výsledku.

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

Viete použiť explicitnú konverziu a chápete, že neplatný vstup skončí chybou.

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ť

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) >= 80

Jeho 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

  1. int("86") vytvorí celé číslo 86.
  2. type(86) == int má hodnotu true.
  3. 86 >= 80 je tiež true, preto je konečný výsledok true.

Vaša úloha

  1. Spustite príklad.
  2. Zmeňte rawScore na "79" a výraz spustite znova.
  3. 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šírenia cel.bind() použitého v samostatnej záložke.