Курс по Raku / Напреднали / Модули / Пакети и пространства от имена 🆕 / Exercises / Вложено име
Решение: Вложено име
Ето едно възможно решение на задачата.
Код
module Outer {
module Inner {
our $base = 10;
our sub doubled { $base * 2 }
}
}
say $Outer::Inner::base;
say Outer::Inner::doubled();🦋 Можете да намерите изходния код във файла nested-name.raku.
Изход
10
20Коментари
Влагането на едно пространство от имена вътре в друго изгражда по-дълъг път с
::. И променливата, и подпрограмата се намират на две нива навътре, вOuter::Inner.Пълното име
$Outer::Inner::baseдостига до променливата, аOuter::Inner::doubled()достига до подпрограмата чрез същите две нива. Името на подпрограмата не носи сигил, така че за разлика от променливата няма$отпред.И двата члена са декларирани с
our, което ги прави видими извън техния модул. Декларация сmyби ги запазила частни заInner.