【发布时间】:2014-07-06 19:42:22
【问题描述】:
我有一个带有重载字符串化运算符的 Moose 类,我实际上希望在运行时更改它,因为我需要不同格式的文本输出。
换句话说,我希望能够做这样的事情:
$obj = Class->new("a'");
$obj->formatter("A::Formatter");
print "$obj";
# prints "a'"
$obj->formatter("Another::Formatter");
print "$obj";
# prints a1
我还希望格式化程序是模块化的,这样我就可以封装和插入不同的格式化程序,而不会造成巨大的意大利面条混乱。
我应该如何最好地做到这一点?角色是解决这类问题的好方法吗?我已经检查了MooseX::Object::Pluggable、MooseX::Traits::Pluggable 和MooseX::Traits 以开始但需要建议,因为这对我来说是未知的领域。
【问题讨论】: