假设你有一堆需要访问的类

ModuleA::ModuleB::ActualClassName

我想绕过ModuleA::ModuleB部分,输入ActualClassName让它知道我在说什么。
文件到类的比例是1:1,所以我使用dir导航到目录并创建一个字符串类名数组,我想将其转换为变量。
DR
假设["ClassOne", "ClassTwo"]使其
ClassOne == ModuleA::ModuleB::ClassOneClassTwo == ModuleA::ModuleB::ClassTwo
它的基本目标是让我在rails控制台上的生活更轻松。
编辑:我发现我真正想要的东西有很多困惑,部分原因是我自己对ruby术语的误用。相反,我会提出一个“填补空白”类型的解决方案。
假设ModuleA::ModuleB::ClassOneModuleA::ModuleB::ClassTwo是定义的类
classes = ["ClassOne", "ClassTwo"]
# insert ruby magic here
ClassOne == ModuleA::ModuleB::ClassOne # true
ClassTwo == ModuleA::ModuleB::ClassTwo # true

最佳答案

classes = ['ClassOne', 'ClassTwo']

classes.each {|klass| Object.const_set(klass, ModuleA::ModuleB.const_get(klass))}

puts ClassOne == ModuleA::ModuleB::ClassOne # => true
puts ClassTwo == ModuleA::ModuleB::ClassTwo # => true

这不是你要找的吗?参考:Module#const_getModulet#const_set

关于ruby-on-rails - 我可以使用Rails将字符串转换为类吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47946130/

10-15 18:07