Как я могу создать структуру после инициализации объекта Moose? - PullRequest
2 голосов
/ 20 октября 2010

Я использую Moose для написания объектного модуля.

В настоящее время у меня есть несколько обязательных полей:

has ['length'] => (
    is       => 'ro',
    isa      => 'Int',
    required => 1,
);

has ['is_verified'] => (
    is       => 'ro',
    isa      => 'Bool',
    required => 1,
);

has ['url'] => (
    is       => 'ro',
    isa      => 'Str',
    required => 1,
);

После того, как объект был инициализирован этими полями, я хотел бысоздайте некоторую структуру и используйте ее из методов объекта.

как (где) мне это сделать?

1 Ответ

4 голосов
/ 20 октября 2010

Есть (как минимум) две возможности:

  1. Вы можете создать подпункт BUILD. Он вызывается автоматически после инициализации объекта.

  2. Вы создаете нормальный атрибут и отмечаете его как ленивый. Затем вы предоставляете подпрограмму, которая создает этот атрибут: либо builder, либо default. Вы можете прочитать больше об этом в руководстве .

...