Курс по 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 тест върху съдържанието на тази тема.

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

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


💪 Или преминете направо към упражненията в този раздел.