是否可以在运行时替换 Moose 对象的方法?
通过查看Class::MOP::Method
的源码(Moose::Meta::Method
继承自)我得出的结论是,通过这样做
$method->{body} = sub{ my stuff }
我将能够在运行时替换对象的方法。 我可以使用该方法
$object->meta->find_method_by_name(<method_name>);
但是,这并没有完全成功。
是否可以在运行时修改方法?那么,Moose 的实现方法是什么?
最佳答案
无论驼鹿与否,这听起来都不是一个好主意。
相反,将您的对象设计为具有该方法的访问器。例如,您类(class)的用户可以使用 My::Frobnicator->frobnicator->()
获取并调用 frobnicator
方法并使用 My::Frobnicator ->frobnicator(sub { } )
来设置它。
关于perl - 如何在运行时替换 Moose 对象的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2434823/