我发现了一些非常令人困惑的事情
我曾经有一个带有各种指令的方法,结果如下:
$self->save;
$object1->save;
for my $action (@{$self->actions}) {
$action->save;
}
return $self;
我将其更改为:
return if !$self->save;
return if defined $object1 && !$object1->save;
for my $action (@{$self->actions}) {
return if !$action->save;
}
return $self;
第一个版本一直运行到最后一行。在第二个版本中,我从未到达最后一行。我没有修改整个系统中的任何其他内容。我究竟做错了什么?
更新1:
注意
return if !$self->save;
return if defined $object1 && !$object1->save;
for my $action (@{$self->actions}) {
$action->save;
}
return $self;
也提前结束。
更新2:
$对象1
my $object1 = $self->get_chosen;
执行以下操作:
sub get_chosen {
my ($self) = @_;
my $chosen_id = $self->_get_chosen_id;
return undef if !defined $chosen_id;
my ($chosen)
= grep { $_->id eq $chosen_id } @{ $self->members };
return $chosen;
}