Курс 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 доступна; goodbye ні

Називання мітки імпортує натомість ту групу — і, можливо, несподівано, не типову на додачу:

use Greeting :partings; # goodbye доступна; hello ні

Запит :partings дає вам саме цю групу. Щоб підтягнути все, що експортує модуль, скористайтеся вбудованою міткою :ALL:

use Greeting :ALL; # і hello, і goodbye

Дві особливі мітки варто знати. :ALL підтримується кожним модулем і імпортує всі його експорти. :MANDATORY — та, яку можна поставити на підпрограму, що має імпортуватися незалежно від того, яку мітку обрав викликач.

Кожна мітка насправді є пакунком усередині пакунка EXPORT модуля — наприклад, Greeting::EXPORT::partings, — і саме це перелічує інтроспекція модулів. Мітки дозволяють більшому модулю тримати свою типову поверхню невеликою, водночас пропонуючи додаткові можливості на запит.

Практика

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

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

Тест — use проти need   |   Тест — Теги експорту


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