Курс языка программирования 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

Решение

Смотрите решение

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

Тест — Специальные переменные   |   Решение: Динамическая переменная