Курс языка программирования Raku / Продвинутый уровень / Модули / Пакеты и пространства имён

Пакеты и модули

Ключевое слово package вводит пространство имён. Всё, что объявлено внутри него с помощью our, становится частью этого пространства имён и может быть доступно извне через имя пакета и разделитель :::

package Maths {
    our $pi = 3.14;
    our sub double($x) { $x * 2 }
}

say $Maths::pi;         # 3.14
say Maths::double(5);   # 10

К переменной обращаются как $Maths::pi — сигил, затем имя пакета, затем имя переменной. Подпрограмма вызывается как Maths::double(...).

И package, и module создают пространство имён; они различаются тем, что ещё они делают. module — обычный выбор для единицы повторно используемого кода, тогда как простой package — это просто пространство имён без ничего лишнего. (class, с которым вы познакомитесь в следующей части, тоже создаёт пространство имён и добавляет поверх него объектно-ориентированный механизм.)

module Greet {
    our sub hello { 'hi' }
}

say Greet::hello; # hi

Таким образом, пространство имён, которое вы получали от module, — это тот же механизм, который package предоставляет сам по себе. Выбор между ними — в основном вопрос намерения: module для библиотек, package для простого пространства имён, а когда дело доходит до объектов — class для типов.

Практика

Пройдите 1 тест по содержанию этой темы.

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

Пакеты и пространства имён   |   Тест — Пакеты


💪 Или перейдите сразу к упражнениям этого раздела.