私は非常に紛らわしいものを見つけました
以前は、さまざまな指示を含むメソッドがありましたが、最終的には次のようになりました。
$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;
最初のバージョンは最後の行まで実行されます。2 番目のバージョンでは、最後の行に到達することはありません。システム全体で他に何も変更していません。私は何を間違っていますか?
アップデート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;
}