我想创建一个与传递给它的类混淆的函数.重新打开这些类以添加功能的最惯用方法是什么?这就是我的意思:
def class_messer(target_object)
#would like to reopen class here with something like:
class target_object.class
#add methods
end
end
Run Code Online (Sandbox Code Playgroud)
显然语法不起作用.我可以得到target_object的类并评估一些字符串,但这感觉很糟糕.有没有比较惯用的方法呢?
我想你在找class_eval.如果你想重新打开一个类而你没有那个常量,而是一个引用,你可以调用class_eval它并传递一个代码块(甚至是一个字符串)来在该类上下文中进行评估.
def class_messer(target_object)
# assuming that target_object is an instance of desired class
target_object.class.class_eval do
#add methods
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
522 次 |
| 最近记录: |