假设我有以下内容:
module A
class B
# ...
end
# ...
end
Run Code Online (Sandbox Code Playgroud)
假设我有几个不同的文件,具有不同的B值,但都在同一个模块中(A).从一个require文件然后require是这些文件中的每个文件,是否有一种内省/反思的方法(这些是不同的东西?我对这种区别是朦胧的,如果是这样的话)来确定(并获取对象)模块中的类?
我试过这个,这让我有点接近:
A.constants # => ["B"]
Run Code Online (Sandbox Code Playgroud)
但我宁愿回来[A::B],而不是一个字符串,这样我就可以调用类似的东西singleton_methods,这对我的程序很有用,它试图将数据映射到各种子类的方法中.
哈!你不知道吗?在写完这篇文章之后,我发现了一个似乎对我有用的答案:
A.constants.collect{|k| A.const_get(k)}.select {|k| k.is_a?(Class)} # => [A::B]
Run Code Online (Sandbox Code Playgroud)
甜蜜,这很容易,一旦我把正确的部分放在一起.:)