Как вы можете создавать приватные / публичные переменные и функции, используя Moose? - PullRequest
6 голосов
/ 13 апреля 2011

Я хожу по рецептам Moose и до сих пор не могу понять, могу ли я создавать закрытые переменные и функции, используя его? Является ли это возможным? Если да, то как их создать с помощью Moose?

Ответы [ 2 ]

10 голосов
/ 13 апреля 2011

Как указывает daxim, частные методы имеют префикс "_".Поскольку атрибуты (переменные экземпляра) генерируют методы получения (и если rw также устанавливает методы) из коробки, вы должны сделать это:

has 'myvariable' => (
    is       => 'ro',
    writer   => '_myvariable',
    init_arg => undef,
    # other options here
);

Таким образом, вы можете установить этот атрибут в своем классе / экземпляре, и этоне устанавливается снаружи.Если доступ только для чтения слишком велик, вы также можете пометить его как «частный»:

has '_myvariable' => (
    is       => 'ro',
    writer   => '_set_myvariable'
    init_arg => undef,
    # other options here
);
10 голосов
/ 13 апреля 2011

Добавьте к идентификатору _, чтобы пометить функцию / переменную и т. Д. Как закрытые.Это задокументировано в perlstyle в разделе о scope , примерно в середине документа.документация), но не применяется компилятором.Смотрите perlmodlib # ПРИМЕЧАНИЕ .

...