Курс по Raku / Напреднали / Контейнери / Специални и динамични променливи 🆕 / Exercises

Динамична променлива

Проблем

Динамичната променлива — написана с туигила * — се търси чрез обхождане навън през стека на извикванията, а не чрез лексикален обхват. Така стойността, която подпрограмата вижда, зависи от това кой я е извикал, което позволява на блок да изпълни кода, който извиква, под различна идентичност.

  1. Декларирайте динамична променлива $*user със стойност 'guest'.
  2. Напишете подпрограма whoami, която отпечатва running as, последвано от текущата $*user (например running as guest). Тя трябва да чете $*user директно — не приема параметри.
  3. Извикайте whoami веднъж на най-горното ниво: тя докладва guest.
  4. След това, вътре в блок, който предекларира $*user като 'admin', извикайте същата whoami отново: сега тя докладва admin.

Пример

Програмата отпечатва:

running as guest
running as admin

Решение

Вижте решението

Навигация в курса

Тест — Специални променливи   |   Решение: Динамична променлива