条件 Moose::角色消费

Posted

技术标签:

【中文标题】条件 Moose::角色消费【英文标题】:Conditional Moose::Role consumption 【发布时间】:2014-04-11 14:21:37 【问题描述】:

我有一个 Moose 类,它正在使用一个角色,比如 ...

package MyPackage;
use Moose;

with 'MyRole';

# ...

__PACKAGE__->meta->make_immutable;

我的目标是,当另一个模块安装在正在运行的系统上而不在我的模块中创建新的依赖项时,只使用一个角色。当模块不可用时,应使用正常的包功能,无需角色且不会崩溃。

我已经在Moose::Util 中找到了ensure_all_rolesapply_all_roles。我试图编写一个方法,当我的条件满足时调用它们。但是因为我希望我的类是不可变的,所以应用程序崩溃了......

The 'add_package_symbol' method cannot be called on an immutable instance

这对我来说很有意义。

我的问题是:如何在给定条件下为一个被标记为不可变的类应用角色?

【问题讨论】:

【参考方案1】:

我尝试了以下

with 'MyRole' if $condition;

对于 $condition 的两个真值,它都可以正常工作。

【讨论】:

以上是关于条件 Moose::角色消费的主要内容,如果未能解决你的问题,请参考以下文章

熊猫:LEFT OUTER JOIN where(ON)2个匹配的条件[重复]

Linux系统编程5_条件变量与互斥锁

Linux系统编程5_条件变量与互斥锁

条件变量生产者消费者模型

C++实现 生产者消费者模型

条件变量生产者和消费者模型