小编Ton*_*wis的帖子

如何处理:由于循环导入,Moo :: Role的`before`修饰符被静默跳过?

使用Moo::Role,我发现循环导入正在默默地阻止执行before我的方法的修饰符.

我有一个Moo::RoleMyRole.pm:

package MyRole;
use Moo::Role;
use MyB;
requires 'the_method';
before the_method => sub { die 'This has been correctly executed'; };
1;
Run Code Online (Sandbox Code Playgroud)

......消费者MyA.pm:

package MyA;
use Moo;
with ( 'MyRole' );
sub the_method { die; }
1;
Run Code Online (Sandbox Code Playgroud)

..另一个在MyB.pm:

package MyB;
use Moo;
with ( 'MyRole' );
sub the_method { die 'The code should have died before this point'; }
1;
Run Code Online (Sandbox Code Playgroud)

当我运行这个script.pl:

#!/usr/bin/env perl
package main; …
Run Code Online (Sandbox Code Playgroud)

perl role moo

6
推荐指数
1
解决办法
116
查看次数

标签 统计

moo ×1

perl ×1

role ×1