2014-03-07 65 views
5

我試圖找出一種方法來查看是否已設置了我的懶惰構建屬性之一。我搜索了Moose :: Meta :: AttributeClass :: MOP :: Attribute,並看到了get_valuehas_value方法的文檔,但它們似乎不適合我。駝鹿 - 確定是否已設置懶惰屬性

get_value文檔說:

$attr->has_value($instance) 

但是,什麼是$實例?我嘗試使用我的對象,但這只是返回錯誤:

"You must pass a package name and it cannot be blessed.."

任何幫助表示讚賞!

+0

'$ instance'應該是你的對象。沒有看到更多的代碼,很難知道你做錯了什麼。 –

+0

謝謝你澄清。實際上,使用我的對象作爲$實例DID工作,它只是在100%的時間內返回true。但是這似乎是一個不同的問題,所以我會用另一個問題來提問。 – Ryan

回答

5

你可能想要的是你的屬性的謂詞。例如。

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

這是爲我的數據庫交互代碼,所以我希望多一點全面的(爲每一​​個懶惰屬性設置一個謂詞是不幸的......)但是,由於這是對我提出的問題的最佳答案,我感謝你,並會接受它。 – Ryan

+0

然後你可能想看看MooseX :: AttributeShortcuts,特別是'is =>「rwp」','is =>「lazy」'和'predicate => 1'選項... YMMV。 – RsrchBoy