我有一个Moose
类,正在使用像...这样的角色。
package MyPackage;
use Moose;
with 'MyRole';
# ...
__PACKAGE__->meta->make_immutable;
我的目标是,仅在使用角色时,在正在运行的系统上安装另一个模块而不在我的模块中创建新的依赖项。当模块不可用时,应该使用正常的包功能,没有角色而且不会崩溃。
我已在Moose::Util中找到ensure_all_roles
和apply_all_roles
。我试着写一个方法,在我的条件满足时调用它们。但是因为我希望我的类是不可变的,所以应用程序崩溃......
The 'add_package_symbol' method cannot be called on an immutable instance
这对我有意义。
我的问题是:如何在一个给定条件下为一个被标记为不可变的类应用一个角色?
答案 0 :(得分:0)
我尝试了以下
with 'MyRole' if $condition;
对于$ condition的两个真值都可以正常工作。