Курс Raku / Розширені / Оператори / Трейти та прагми 🆕

Прагми

Прагма виглядає як модуль, завантажений через use, але замість того щоб принести код, вона змінює правило компіляції до кінця поточної області видимості. Вмикають її через use, а вимикають (де це має сенс) через no.

Найважливіша прагма, strict, у Raku увімкнена за замовчуванням: вона вимагає оголошувати кожну змінну перед використанням, — саме тому одрук в імені змінної виявляється, а не мовчки створює нову змінну.

Вимкнення strict через no strict знімає цю вимогу, тож можна присвоїти значення змінній, яку ніколи не оголошували через my:

no strict;

$x = 42;
say $x; # 42

За чинної типової strict цей голий $x = 42 був би помилкою під час компіляції — Variable ‘$x’ is not declared. Рядок no strict послаблює правило до кінця обгортальної області видимості.

Серед інших прагм — fatal (яка перетворює тихий збій на кинуте виняткове становище, зручна, щойно ви познайомитеся з обробкою винятків), isms (щоб дозволити ідіоми, запозичені з інших мов) і variables (щоб налаштувати правила для змінних). Дія прагми є лексичною — вона триває лише до кінця блоку, в якому з’явилася, — тож правило можна затягнути чи послабити рівно на тій ділянці коду, де вам треба.

Одна прагма приймає аргумент: lib додає каталог до списку, в якому Raku шукає модулі під час завантаження, — це програмний відповідник опції командного рядка -I:

use lib 'lib';

Ви звернетеся до неї, щойно почнете писати й завантажувати власні модулі.

Практика

Виконайте 1 тест за змістом цієї теми.

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

Написання трейту   |   Тест — Прагми


💪 Або перейдіть одразу до вправ цього розділу.