Курс языка программирования Raku / Продвинутый уровень / Модули / Основы модулей
Теги экспорта
Пометка подпрограммы is export помещает её в группу
экспорта модуля по умолчанию — это имена, которые подключает
простой use. Добавив к is export тег,
вы можете распределить экспорты по именованным группам и позволить
каждой программе выбирать нужный набор.
Тег записывается в скобках после is export:
unit module Greeting;
sub hello($name) is export { "Hello, $name!" }
sub goodbye($name) is export(:partings) { "Goodbye, $name!" }У hello нет тега, поэтому она принадлежит группе по
умолчанию; goodbye помечена тегом
:partings.
Простой use импортирует только группу по умолчанию:
use Greeting; # hello is available; goodbye is notУказание тега импортирует эту группу вместо группы по умолчанию — и, возможно неожиданно, не включает группу по умолчанию:
use Greeting :partings; # goodbye is available; hello is notЗапрашивая :partings, вы получаете именно эту группу.
Чтобы подключить всё, что модуль экспортирует, используйте встроенный
тег :ALL:
use Greeting :ALL; # both hello and goodbyeСтоит знать два специальных тега. :ALL поддерживается
каждым модулем и импортирует все его экспорты. :MANDATORY
можно поставить на подпрограмму, которая должна импортироваться
независимо от того, какой тег выберет вызывающая сторона.
Каждый тег — это на самом деле пакет внутри пакета
EXPORT модуля, например
Greeting::EXPORT::partings, — именно это показывает интроспекция модулей. Теги
позволяют большому модулю сохранять небольшую поверхность по умолчанию,
при этом предлагая дополнительные возможности по запросу.
Практика
Пройдите 1 тест по содержанию этой темы.
Навигация по курсу
← Тест —
use и need | Тест — Теги
экспорта →
💪 Или перейдите сразу к упражнениям этого
раздела.