我刚开始和Moose一起工作,遇到了一个我无法弄清楚的奇怪问题.以下代码:
#!/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";
Run Code Online (Sandbox Code Playgroud)
生产:
Can't call method "x" on an undefined value at m2.pl line 19.
Run Code Online (Sandbox Code Playgroud)
但是,如果我替换Try::Tiny为TryCatch,它会像我认为的那样:
oops
Run Code Online (Sandbox Code Playgroud)
即使x是正确的值,也就是说5,Try::Tiny仍然产生了undefined value错误.
正如我一直在阅读的所有Moose文档一样Try::Tiny,我对此代码无效的原因感到非常困惑.我在这里做错了吗?
dus*_*uff 16
Try::Tiny 在try/catch节结束时需要分号:
try {
$f = Foo->new(x => 'x');
} catch {
die "oops\n";
};
Run Code Online (Sandbox Code Playgroud)
这是由于Try::Tiny- try并且catch都是函数的实现.
| 归档时间: |
|
| 查看次数: |
804 次 |
| 最近记录: |