Курс по 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   |   Тест — Тагове за експортиране


💪 Или преминете направо към упражненията в този раздел.