CH03-L04 · základy

Prítomnosť, null a chýbajúca hodnota

Overíte prítomnosť položky skôr, než sa pokúsite prečítať jej hodnotu.

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

Viete rozlíšiť chýbajúcu položku od položky s hodnotou null.

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

Prítomnosť a hodnota sú dve odlišné otázky. has(user.email) overí existenciu vybranej položky bez toho, aby ju najprv čítal. Ak položka chýba, podmienený operátor vyberie náhradný text. Položka s hodnotou null je stále prítomná.

Prečítajte pripravený príklad

Pravidlo v režime CEL + JSON je:

has(user.email) ? user.email : 'not provided'

Jeho vstup je:

{
  "user": {
    "name": "Maya"
  }
}

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. Mapa user nemá kľúč email.
  2. has(user.email) vráti false.
  3. Podmienený výraz vráti "not provided".

Vaša úloha

  1. Spustite pôvodný príklad.
  2. Pridajte do mapy alebo JSON položku "email": "maya@example.test".
  3. Potom nastavte e-mail na null a overte, že samotná prítomnosť nezaručuje reťazec.

Očakávané pozorovanie: Pridaný e-mail sa vráti; prítomná hodnota null môže vyžadovať ďalšiu kontrolu.

Častá chyba

Výraz user.email != null číta položku skôr, než dokáže jej existenciu. Ak prítomnosť nie je istá, použite has().

Zobraziť vysvetlenie

Nie. Potvrdzuje iba prítomnosť položky.

Kontrolná otázka

Potvrdzuje has(user.email), že e-mail je neprázdny text?

Hlavná myšlienka

Pred čítaním overte prítomnosť a obsah hodnoty kontrolujte samostatne.

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.