Курс по Raku / Напреднали / Модули / Основи на модулите

Импортиране

Има повече от един начин за внасяне на модул в програма. Трите оператора use, need и require се различават по кога модулът се зарежда и какво прави достъпно.

use

Вече сте се запознали с use. Той зарежда модула по време на компилация и импортира експортираните му имена, така че те могат да бъдат извикани директно:

use Greeting;
say hello('Anna'); # Hello, Anna!

need

need също зарежда модула по време на компилация, но не импортира експортираните имена. Все пак достигате до our променливите на модула чрез името на модула:

need Greeting;
say $Greeting::version; # 1.0

След need Greeting, самостоятелно hello(...) не би било разпознато, тъй като нищо не е било импортирано — достъпни са само квалифицираните имена, като $Greeting::version.

require

require зарежда модула по време на изпълнение, а не по време на компилация. Това е полезно, когато не знаете до изпълнението на програмата дали модулът ще бъде необходим, например когато името му се определя от въведеното от потребителя.

Тъй като зареждането се случва по време на изпълнение, нищо не се импортира автоматично. Изброявайки символите, които искате, в ъглови скоби след името, ги внасяте, така че могат да бъдат извикани директно:

require Greeting <&hello>;
say hello('Anna'); # Hello, Anna!

За ежедневна употреба use е това, което ви трябва; need и require са за по-редки случаи.

Практика

Направете 1 тест върху съдържанието на тази тема.

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

Тест — use   |   Тест — use срещу need


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