Курс 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 тест за змістом цієї теми.

Навігація курсом

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


💪 Або перейдіть одразу до вправ цього розділу.