Курс Raku / Розширені / Модулі / Пакети та простори імен 🆕
Простори імен та our
Саме декларатор our робить щось видимим у своєму
просторі імен. Змінна, оголошена через my, є лексичною —
приватною для свого блоку, — тоді як оголошена через our є
ще й змінною пакунка, до якої можна дістатися ззовні через шлях із
:::
module Counter {
our $count = 0; # змінна пакунка
my $secret = 42; # лексична, ззовні не видима
}
say $Counter::count; # 0$Counter::count працює, бо count оголошено
через our; $Counter::secret зазнав би невдачі,
бо secret є лексичною.
Простори імен можуть вкладатися. Пакунок усередині
пакунка будує довший шлях із :::
module Outer {
module Inner {
our $val = 42;
}
}
say $Outer::Inner::val; # 42Повне ім’я $Outer::Inner::val проходить від зовнішнього
простору імен усередину внутрішнього до змінної. Саме так організовано
стандартну бібліотеку — імена на кшталт IO::Socket::INET є
вкладеними просторами імен — і саме так написаний вами модуль групує
свої частини під одним іменем верхнього рівня.
Навігація курсом
← Тест — Пакети | Змінна our →
💪 Або перейдіть одразу до вправ цього розділу.