【发布时间】:2014-04-11 14:21:37
【问题描述】:
我有一个 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
这对我来说很有意义。
我的问题是:如何在给定条件下为一个被标记为不可变的类应用角色?
【问题讨论】: