Курс 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


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