2

我正在尝试在 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 食谱并尝试使用它,但我不完全确定这是我正在寻找的。使用它,我在 Gene 类中写了类似的东西:

 sub Build{
 my(&self,$params)=@_;
 foreach my $bindingsite(@{$self->bindingsites}){
   $gene->bindingsite($self)}}

但我不确定这是我需要做的,以及每个 Gene 类如何知道要存储哪些 Cis 对象。

提前感谢您的帮助

4

1 回答 1

0

如果您希望在将 Cis 对象添加到 Gene 类的绑定站点时自动更新基因属性,那么您可以在 Gene 类中使用“after”方法修饰符,例如。

after 'bindingsites' => sub {
    my $self = shift;
    my $bindingsites = $self->bindingsites;

    $_->gene($self) for @$bindingsites;
};

这个 sub 将在调用后运行$gene->bindingsites(...),并将迭代设置基因属性的 Cis 对象。

于 2011-12-07T14:22:21.630 回答