Предположим, я хочу такой класс:
package Restraint;
use Moose;
has ball => (
is => 'ro',
does => 'Heavy',
);
has chain => (
is => 'ro',
does => 'Lockable',
);
has ball_class => (
is => 'ro',
isa => 'Str',
);
has chain_class => (
is => 'ro',
isa => 'Str',
);
1;
Теперь я хочу создать экземпляр класса:
my $r = Restraint->new(
ball_class = 'Ball',
chain_class = 'Chain',
);
оба аргумента являются обязательными.
Я также хочу создать экземпляры ball_class
и chain_class
во время построения и назначить их соответствующим атрибутам, чтобы, наконец, я мог, например, $r->ball->lift
или $r->chain->lock
и т. Д.
Как мне это сделать?