Angenommen, ich eine Klasse wie folgt will:Instanziierungsanwendung obligatorische Attribute während der Bauphase
my $r = Restraint->new(
ball_class = 'Ball',
chain_class = 'Chain',
);
beiden Argumente sind zwingend notwendig:
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;
Jetzt habe ich die Klasse wie instanziiert werden soll.
Ich möchte auch beide ball_class
und chain_class
während der Konstruktion instanziieren und sie entsprechenden Attributen zuweisen, so dass ich schließlich z. $r->ball->lift
oder $r->chain->lock
usw.
Wie soll ich das tun?
Ich habe das Handbuch gesehen, aber ich kann immer noch nicht herausfinden, wie es geht. Das Übergeben von Objekten wird für mich nicht möglich sein, da die Instanziierung nicht trivial sein wird - sie werden nicht immer nur "neue()" Objekte sein. Auch ich muss so viel wie möglich verstecken. –
Vielen Dank. Ich habe RTFM, aber manchmal, wenn ich es an * eigenem * Beispiel sehe, zündet es die Glühbirne an. Und es tat es. –
Jetzt scheint es mir, dass es zwei Antworten in einem gibt: der erste ist * alternativ *, der zweite ist wirklich eine Lösung für das ursprüngliche Problem. Darf ich vorschlagen, es in zwei separate Antworten hier zu teilen?(* Beide * würden eine Aufwertung verdient ;-D) –