gpt4 book ai didi

ruby - 获取加载时添加的内容

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

有没有办法获取在加载外部 ruby​​ 文件时添加或重新定义的所有常量(包括模块和类)及其方法和类或实例变量的列表(数组)?

最佳答案

这应该可以解决问题:

def all_constants_with_methods
constants = Object.constants.map { |sym| Object.const_get sym }
Hash[constants.map { |constant| [constant, (constant.instance_methods rescue [])] }]
end

before = all_constants_with_methods
load foo.rb
after = all_constants_with_methods

constants_added = after.keys - before.keys
methods_added = Hash[after.keys.map do |c|
[c, after[c] - (before[c] || [])]
end.reject do |_, v|
v.empty?
end]

不过,据我所知,没有任何方法可以知道某个方法是否被重新定义。您可以轻松地将其扩展为类变量(使用 class_variables)和类实例变量(使用 instance_variables)。

关于ruby - 获取加载时添加的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12737792/

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