Курс по Raku / Напреднали / Модули / Пакети и пространства от имена 🆕
Пространства от имена и our
Декларацията our е това, което прави нещо видимо в
неговото пространство от имена. Променлива, декларирана с
my, е лексикална — частна за своя блок — докато променлива,
декларирана с our, е също и пакетна променлива, достъпна
отвън чрез пътя с :::
module Counter {
our $count = 0; # package variable
my $secret = 42; # lexical, not visible outside
}
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 →
💪 Или преминете направо към упражненията в този
раздел.