CH02-L01 · základy

Čísla a aritmetika

Vypočítate výslednú cenu a rozlíšite celočíselné a desatinné delenie.

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

Viete, prečo CEL nemieša číselné typy automaticky a kedy použiť explicitnú konverziu.

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

CEL poskytuje číselné typy int, uint a double; aritmetika vyžaduje zhodné typy. JSON má iba všeobecný zápis čísla, preto toto cvičisko mapuje čísla JSON na CEL double. Samostatný príklad preto pri hodnote 12.5 používa 3.0, nie 3. Celočíselné delenie odstráni desatinnú časť smerom k nule, kým delenie typu double ju zachová.

Prečítajte pripravený príklad

Pravidlo v režime CEL + JSON je:

price * quantity - discount

Jeho vstup je:

{
  "price": 12.5,
  "quantity": 3,
  "discount": 3
}

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. 12.5 * 3.0 vytvorí 37.5.
  2. 37.5 - 3.0 vytvorí 34.5.
  3. Konečný typ je double.

Vaša úloha

  1. Spustite oba režimy a potvrďte výsledok 34.5.
  2. V režime Iba CEL skúste 7 / 2.
  3. Potom skúste 7.0 / 2.0 a výsledky porovnajte.

Očakávané pozorovanie: 7 / 2 vráti 3; 7.0 / 2.0 vráti 3.5.

Častá chyba

Zápis 12.5 * 3 mieša typy double a int. CEL vyžaduje explicitné rozhodnutie a jeden operand automaticky nerozšíri.

Zobraziť vysvetlenie

Takýto zápis vytvorí typ double, ktorý sa zhoduje s cenou a zľavou.

Kontrolná otázka

Prečo je množstvo v samostatnom príklade zapísané ako 3.0?

Hlavná myšlienka

Číselný typ zvoľte vedome, operandy aritmetiky udržujte kompatibilné a konvertujte iba na hranici údajov.

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.