Perl6: модуль против пакета, модуль и пакет - PullRequest
0 голосов
/ 17 января 2019

Я ищу некоторую очистку моих знаний. В проекте со сложной структурой модуля я бы хотел сохранить структуру чистой, создавая структурированное дерево пространства имен. Скажем, что-то вроде:

App
  Config
    Key
    Node
    Param
    Type
      MyType

Каждая запись в App :: Config должна содержаться в своем собственном файле. Всегда печатать такие вещи, как App::Config::Key, это пустая трата времени. is export не имеет параметра для объявления имени, которое должно быть экспортировано. Итак, я наконец пришел к следующему решению:

Config.pm6

unit module App::Config:ver<0.0.1>;
...

Key.pm6

unit package App::Config;

class Key is export {
    ...
}

И это работает так, как я хочу:

use App::Config::Key;

say Key.^name; # App::Config::Key

Остается только один вопрос: есть ли какие-либо предостережения? Какие-нибудь скрытые побочные эффекты, чтобы знать о

...