2014-03-07 10 views
5

Ich versuche herauszufinden, ob eines meiner lazy-built-Attribute gesetzt wurde oder nicht. Ich habe die Dokumente für beide Elche :: Meta :: Attribut und und Klasse :: MOP :: Attribut, und sah die get_value und has_value Methoden, aber sie scheinen nicht für mich arbeiten.Moose - Ermitteln, ob das Lazy-Attribut gesetzt wurde

Die Dokumentation für get_value sagt:

$attr->has_value($instance) 

Aber was ist $ instance? Ich habe versucht, mein Objekt zu verwenden, aber das gibt nur den Fehler zurück:

Jede Hilfe ist willkommen!

+0

"$ instance" sollte Ihr Objekt sein. Es ist schwer zu wissen, was du falsch machst, ohne mehr Code zu sehen. –

+0

Danke für die Klärung. Wenn ich mein Objekt als $ -Instanz nutze, funktionierte es tatsächlich, es gab nur 100% der Zeit wahr. Aber das scheint ein anderes Problem zu sein, also werde ich es in einer anderen Frage stellen. – Ryan

Antwort

5

Was Sie wahrscheinlich wollen, ist ein Prädikat für Ihr Attribut. Z.B.

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

Dies ist für meinen DB-Interaktionscode, also hatte ich auf etwas mehr von einem Catch-All gehofft (das Setzen eines Prädikats für jedes einzelne faule Attribut ist bedauerlich ...) Aber da dies die beste Antwort auf die Frage ist, die ich fragte, Ich danke dir und werde es akzeptieren. – Ryan

+0

Vielleicht möchten Sie sich dann MooseX :: AttributeShortcuts ansehen, speziell das 'is => "rwp"', 'ist => "faul"' und 'Prädikat => 1' Optionen ... YMMV. – RsrchBoy

Verwandte Themen