Kurso de Raku / Progresinta / Moduloj / Pakoj kaj nomspacoj

Pakoj kaj moduloj

La ŝlosilvorto package enkondukas nomspacon. Ĉio deklarita ene de ĝi per our fariĝas parto de tiu nomspaco kaj povas esti atingita de ekstere per la nomo de la pako kaj la apartigilo :::

package Maths {
    our $pi = 3.14;
    our sub double($x) { $x * 2 }
}

say $Maths::pi;         # 3.14
say Maths::double(5);   # 10

La variablo estas atingata kiel $Maths::pi — la sigelo, poste la nomo de la pako, poste la nomo de la variablo. Subrutino estas vokata kiel Maths::double(...).

Kaj package kaj module kreas nomspacon; ili diferencas en tio, kion alian ili faras. module estas la kutima elekto por unuo de reuzebla kodo, dum simpla package estas nur la nomspaco sen io kroma. (class, kiun vi renkontos en la sekva parto, ankaŭ kreas nomspacon kaj aldonas objekt-orientitan maŝinaron supre.)

module Greet {
    our sub hello { 'hi' }
}

say Greet::hello; # hi

Do la nomspaco, kiun vi ricevadis de module, estas la sama mekanismo, kiun package provizas memstare. Elekti inter ili temas plejparte pri intenco: module por bibliotekoj, package por nuda nomspaco — kaj, kiam vi atingos objektojn, class por tipoj.

Praktiko

Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.

Kursa navigado

Pakoj kaj nomspacoj   |   Kvizo — Pakoj


💪 Aŭ iru rekte al la ekzercoj de ĉi tiu sekcio.