gpt4 book ai didi

ruby - 如何在 Ruby 中仅使用其实例变量重新打开一个类?

转载 作者:太空宇宙 更新时间:2023-11-03 17:08:05 24 4
gpt4 key购买 nike

我想创建一个函数来处理传递给它的类。重新打开这些类以添加功能的最惯用的方法是什么?这就是我的意思:

def class_messer(target_object)
#would like to reopen class here with something like:
class target_object.class
#add methods
end
end

显然该语法不起作用。我可以获得 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

关于ruby - 如何在 Ruby 中仅使用其实例变量重新打开一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12201080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com