如何在运行时替换Moose对象的方法?

xxx*_*xxx 6 methods perl runtime moose

是否可以在运行时替换Moose对象的方法?通过查看Class::MOP::Method(Moose::Meta::Method继承自)的源代码,我得出结论

 $method->{body} = sub{ my stuff }
Run Code Online (Sandbox Code Playgroud)

我可以在运行时替换对象的方法.我可以使用该方法

 $object->meta->find_method_by_name(<method_name>);
Run Code Online (Sandbox Code Playgroud)

但是,这并没有完全奏效.

是否可以在运行时修改方法?而且,与Moose一起做的方法是什么?

Sin*_*nür 4

不管是不是驼鹿,这听起来都不是一个好主意。

相反,将您的对象设计为具有该方法的访问器。例如,您的类的用户可以使用 My::Frobnicator->frobnicator->()来获取和调用该frobnicator方法并使用My::Frobnicator->frobnicator(sub { } )来设置它。