出于工作目的,我正在将框架从 Perl5 重写为 Perl6。在某些地方,我需要通过执行sub
它们可能提供的公共来从其他模块/类收集信息;或者他们可能不会。因此,有必要找出是否sub
存在。当一个模块被直接引用Foo::<&my-sub>
(但为了简单起见,我想允许按原样传递模块名称(假设collector
是收集信息的方法):
self.collector( Foo );
Foo
可能在哪里:
module Foo {
use Bar;
use Baz;
our sub my-sub { Bar, 'Baz' }
}
这就是我在 Perl6 语法中遗漏了一些重要的地方,因为以下内容:
method collector ( $mod ) {
my $mod-name = $mod.WHO;
my @mods;
with &::($mod-name)::my-sub {
@mods.push: &$_();
}
}
目前是我可以执行任务的唯一方法。
不过,我还没有尝试过类型捕获。我猜应该按预期工作。所以,问题更多是关于扩展我对语法的了解。