मैंने अभी मूस के साथ काम करना शुरू कर दिया है और एक अजीब समस्या में भाग लिया है जिसे मैं समझ नहीं सकता। निम्नलिखित कोड:मूस के साथ अजीब व्यवहार, कोशिश करें :: छोटा, और TryCatch
#!/usr/bin/env perl
use strict;
use warnings;
use Try::Tiny;
{
package Foo;
use Moose;
has x => (is => 'ro', isa => 'Int');
}
my $f;
try {
$f = Foo->new(x => 'x');
} catch {
die "oops\n";
}
print $f->x . "\n";
पैदा करता है:
Can't call method "x" on an undefined value at m2.pl line 19.
हालांकि, अगर मैं TryCatch
साथ Try::Tiny
की जगह है, यह काम करता है के रूप में मैं यह मान लेगा यह होना चाहिए:
oops
यहां तक कि अगर x
है सही मान, 5
कहें, Try::Tiny
अभी भी undefined value
त्रुटि उत्पन्न करता है।
जैसा कि मूस प्रलेखन के सभी पढ़ रहे हैं, मैं Try::Tiny
का उपयोग कर रहा हूं, मैं इस बात पर बहुत उलझन में हूं कि यह कोड क्यों काम नहीं कर रहा है। क्या मैं यहाँ कुछ पूरी तरह से गलत कर रहा हूँ? - try
और catch
दोनों ही कार्यों रहे
try {
$f = Foo->new(x => 'x');
} catch {
die "oops\n";
};
यह की Try::Tiny
कार्यान्वयन की वजह से है:
गाह, एक शर्मनाक अनदेखी। धन्यवाद! – Joe
+1 * stanza * के भयानक उपयोग के लिए। – FMc