Курс Raku / Розширені / Контейнери / Спеціальні та динамічні змінні 🆕 / Вправи

Динамічна змінна

Завдання

Динамічну змінну — записану з твіґілом * — шукають, рухаючись назовні по стеку викликів, а не за лексичною областю видимості. Тож значення, яке бачить підпрограма, залежить від того, хто її викликав, і це дозволяє блоку виконувати викликаний ним код під іншою особистістю.

  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

Рішення

Дивіться рішення

Навігація курсом

Тест — Спеціальні змінні   |   Розв’язання: Динамічна змінна