Курс языка программирования 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 тест по содержанию этой темы.

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

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


💪 Или перейдите сразу к упражнениям этого раздела.