Perl Moose-确定是否设置了惰性属性

Perl Moose-确定是否设置了惰性属性,perl,moose,Perl,Moose,我正试图找出一种方法来查看我的一个延迟构建属性是否已设置。我在文档中搜索了Moose::Meta::Attribute和Class::MOP::Attribute,看到了get\u value和has\u value方法,但它们似乎不适合我 get\u value的文档说明: $attr->has_value($instance) 但是$instance是什么呢?我尝试使用我的对象,但这只是返回错误: “您必须传递一个包名,它不能被祝福…” 感谢您的帮助 您可能需要的是属性上的谓词。例如

我正试图找出一种方法来查看我的一个延迟构建属性是否已设置。我在文档中搜索了Moose::Meta::AttributeClass::MOP::Attribute,看到了
get\u value
has\u value
方法,但它们似乎不适合我

get\u value
的文档说明:

$attr->has_value($instance)
但是$instance是什么呢?我尝试使用我的对象,但这只是返回错误:

“您必须传递一个包名,它不能被祝福…”


感谢您的帮助

您可能需要的是属性上的谓词。例如

has foo => (
  is        => 'rw',
  lazy      => 1,
  predicate => 'has_foo',
);

$instance
应该是您的对象。如果看不到更多的代码,就很难知道你做错了什么。谢谢你的澄清。将我的对象用作$instance实际上是可行的,它只是在100%的时间内返回true。但这似乎是一个不同的问题,所以我将在另一个问题中提问。这是针对我的DB交互代码的,所以我希望能有更多的全面性(为每个懒惰属性设置一个谓词是不幸的…),但由于这是我问的问题的最佳答案,谢谢你,我会接受的。你可能想看看MooseX::AttributeShortcuts,特别是'is=>“rwp'、'is=>“lazy”和'predicate=>1'选项。。。YMMV。