CH01-L02 · základy

Typy a premenné

Použijete reťazec, číslo a logickú hodnotu bez skrytých automatických konverzií.

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

Viete určiť typ vstupnej hodnoty a odhaliť nekompatibilné operandy.

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

Každá hodnota CEL má typ. V tomto príklade je user.name typu string, user.score je v režime JSON typu double a porovnanie vytvorí bool. Toto cvičisko mapuje čísla JSON na double, preto je hranica zapísaná ako 80.0. CEL potichu neprevedie reťazec "86" na číslo.

Prečítajte pripravený príklad

Pravidlo v režime CEL + JSON je:

user.name == 'Maya' && user.score >= 80.0

Jeho vstup je:

{
  "user": {
    "name": "Maya",
    "score": 86,
    "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

  1. user.name == 'Maya' sa vyhodnotí ako true.
  2. user.score >= 80.0 sa vyhodnotí ako true.
  3. true && true vráti true.

Vaša úloha

  1. Spustite oba režimy a pozrite si typ výsledku.
  2. Zmeňte skóre v JSON na 79 a výraz spustite znova.
  3. Zapíšte skóre ako "86", pozrite si chybu typu a potom úvodzovky odstráňte.

Očakávané pozorovanie: Skóre 79 vráti false; skóre v úvodzovkách spôsobí chybu nekompatibilných typov.

Častá chyba

Číslo z JSON a číslo priamo v samostatnom výraze môžu do cvičiska vstúpiť s odlišným číselným typom. Operandy musia mať zhodný typ alebo sa musia explicitne previesť.

Zobraziť vysvetlenie

"86" je reťazec. CEL nevykonáva automatickú konverziu reťazca na číslo.

Kontrolná otázka

Prečo "86" >= 80.0 zlyhá namiesto výsledku true?

Hlavná myšlienka

Typy sú súčasťou pravidla. Používajte kompatibilné operandy a konverzie zapisujte viditeľne.

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.