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

标签 perl methods runtime moose

是否可以在运行时替换 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/

相关文章:

perl - 我如何模拟 Log::Log4perl::INFO?

python - 在 Python 中解压格式字符

c++调用图,但作为文本

python-3.x - 将列表从另一个类传递给类内的方法,以便修改所述列表并传回 Python 中的原始类

java - 修改 Java 中作为参数传递的数组

c++ - 分析时间时c++中的运行时错误

perl - 为什么符号的封装限定会导致使用更少的内存,即使符号是本地导入的?

c# - 如何在一个语句中分配给变量列表

java - 重写类加载器以获取每个加载的类字节和名称

c++ - 降低构建大小