gpt4 book ai didi

perl - 如何防止无限递归(使用 Moose)?

转载 作者:行者123 更新时间:2023-12-01 06:39:26 25 4
gpt4 key购买 nike

在下面的代码片段(Perl with Moose)中似乎有一个无限递归:

has 'ORM' => ( is     => 'ro',
isa => 'Model::LazySQLModel',
lazy => 1,
builder => 'ORM_builder' );

has 'id' => ( is => 'ro',
isa => 'Int',
lazy => 1,
builder => 'id_builder',
predicate => 'has_id',
);

sub id_builder { $_[0]->ORM->id }

sub ORM_builder {
my ($self) = @_;

# FIXME: looks like infinite recursion
if ($self->id) {
return $self->ORM_find();
} else {
return $self->ORM_insert();
}
}

备注:Model::LazySQLModel 是一个绑定(bind)的散列,它包含 ID 和其他数据库字段。

执行此操作的正确方法是什么(以确保我们防止无限递归)?

最佳答案

if ($self->id) 替换为 if ($self->has_id) 是一个解决方案。

关于perl - 如何防止无限递归(使用 Moose)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38917569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com