我发现了一些令人困惑的事情
我曾经有一个方法,其中包含各种指令,最终结果如下:
$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;
第一个版本一直运行到最后一行。在第二个版本中,我从未到达最后一行。我没有修改整个系统中的任何其他内容。我做错了什么?
UPDATE1:
注意
return if !$self->save;
return if defined $object1 && !$object1->save;
for my $action (@{$self->actions}) {
$action->save;
}
return $self;
也很早就结束了。
UPDATE2:
$ object1
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;
}
答案 0 :(得分:2)
当您致电$action->save
时,其中一个实例正在返回错误值。
答案 1 :(得分:0)
记录。 我仍然不知道为什么代码部分2早期返回但是如果我改变
return if defined $object1 && !$object1->save;
的
return if ($object1 && !$object1->save);
早期的返回错误消失了。