是否有可能将块传递给 Moose 方法?在标准 Perl 中,我可以用这样的原型定义一个函数
sub fn (&) {
my $code =\&{shift @_};
$code->();
}
然后在没有显式sub
引用的情况下将块传递给函数,即fn { say "Hi there, world" }
.
我认为这只有在子例程是第一个参数时才有可能,并且因为这总是$self
使用 Moose 方法,所以在那里似乎不可能,迫使我以稍微更明确的方式来做:
sub wrapper {
my ($self, $code) = @_;
$code->()
}
Wrapper->wrapper(sub { say "Hi there, world" });
现在这将是包装一些块的一种非常方便的方法,即提供一些额外的文本或有条件地执行代码或在错误处理保持不变的一些代码周围包装一个 eval(例如 eval 一些代码和日志错误,记录用户等)。 )。
如果我没有遗漏任何东西,是否有一些半方便的解决方法或替代方法可以在没有太多线路噪音的情况下实现这样的目标?