Moose
とを使用して、型制約をBread::Board
持つ属性を持つオブジェクトを作成し、そのパラメーターを次のような方法で注入することは可能ですか?ArrayRef[SomeObject]
ArrayRef
制約が維持され、- その ArrayRef のメンバーである各オブジェクトは、そのすべての依存関係が によって満たされています
Bread::Board
。 - その ArrayRef のメンバーである各オブジェクトは、
Bread::Board
?によって作成されたオブジェクトです。
私が自分自身を明確に説明していることを確認するために、信じられないほど単純な例を考えてみましょう。Wheel
クラスがあるとしましょう:
package Wheel;
use Moose;
has ['size', 'maker'] => (isa => 'Str', is => 'rw', required => 1);
Vehicle
そして、各インスタンスにたくさんの車輪が含まれるクラスを作成しましょう:
package Vehicle;
use Moose;
has 'wheels' => (
is => 'rw',
isa => 'ArrayRef[Wheel]',
required => 1,
);
の 1 つ以上のインスタンスを作成し、Wheel
それらのインスタンスを含む配列参照を新しいインスタンスに挿入することは可能Vehicle
ですか? これは明らかにうまくいきません:
my $c = container 'app' => as {
container 'wheels' => as {
service 'maker' => "Bob's Tires";
service 'size' => "195R65/15";
service 'carTires' => (
class => 'Wheel',
dependencies => [ depends_on('maker'), depends_on('size') ],
)
};
container 'vehicles' => as {
service 'sedan' => (
class => 'Vehicle',
dependencies => {
# WON'T WORK
wheels => depends_on('/wheels/carTires'),
}
)
};
};
my $v = $c->resolve(service => 'vehicles/sedan');
何か案は?はい、私Vehicle
の車にはおそらく車輪がなく、一輪のセダンを作ろうとしていることは承知していますが、あなたは私の主張を理解していると思います. :-) これは、非常に些細な例であることのみを意図しています。