Курс по 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 | Тест — Тагове за
експортиране →
💪 Или преминете направо към упражненията в този
раздел.