Właśnie zacząłem pracować z Moose i natknąłem się na dziwny problem, którego nie mogę zrozumieć. Poniższy kod:Dziwne zachowanie z Moose, Try :: Tiny i 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";
produkuje:
Can't call method "x" on an undefined value at m2.pl line 19.
Jednakże, jeśli mogę wymienić Try::Tiny
z TryCatch
, działa jako Przypuszczam, że powinien:
oops
Nawet jeśli x
jest poprawna wartość, na przykład 5
, Try::Tiny
nadal powoduje błąd undefined value
.
Ponieważ cała dokumentacja łosia, którą czytałem używa Try::Tiny
, jestem bardzo zdezorientowany, dlaczego ten kod nie działa. Czy robię tutaj coś całkowicie nie tak?
Gah, żenujący widok. Dzięki! – Joe
+1 Do niesamowitego wykorzystania * zwrotki *. – FMc