我正在尝试在Perl中创建一个名为Gene的容器类,它将存储由另一个类'Cis'创建的对象(例如Gene1将存储Cis1a Cis1b Cis1c,Gene2将存储Cis2a Cis2b Cis2c)。这就是我到目前为止所做的:
package Gene;
use Moose;
has 'bindingsites'=>(
isa=>'ArrayRef[Cis]',
is=>'rw',
default=>sub{[]},
package Cis;
use Moose;
has 'gene'=>(isa=>'Gene', is=>'rw', weak_ref =>1);
我正在查看其中一个Moose Recipes并尝试使用它,但我并不完全确定它是我正在寻找的。使用它我写了类似Gene类:
sub Build{
my(&self,$params)=@_;
foreach my $bindingsite(@{$self->bindingsites}){
$gene->bindingsite($self)}}
但我不确定这是我需要做什么,以及每个Gene类如何知道要存储哪些Cis对象。
提前感谢您提供任何帮助
答案 0 :(得分:0)
如果您希望在将Cis对象添加到Gene类的绑定站时自动更新基因属性,则可以在Gene类中使用'after'方法修饰符,例如。
after 'bindingsites' => sub {
my $self = shift;
my $bindingsites = $self->bindingsites;
$_->gene($self) for @$bindingsites;
};
此子将在调用$gene->bindingsites(...)
后运行,并将迭代设置基因属性的Cis对象。