假设你有一堆需要访问的类
ModuleA::ModuleB::ActualClassName
我想绕过
ModuleA::ModuleB
部分,输入ActualClassName
让它知道我在说什么。文件到类的比例是1:1,所以我使用dir导航到目录并创建一个字符串类名数组,我想将其转换为变量。
DR
假设
["ClassOne", "ClassTwo"]
使其ClassOne == ModuleA::ModuleB::ClassOne
和ClassTwo == ModuleA::ModuleB::ClassTwo
它的基本目标是让我在rails控制台上的生活更轻松。
编辑:我发现我真正想要的东西有很多困惑,部分原因是我自己对ruby术语的误用。相反,我会提出一个“填补空白”类型的解决方案。
假设
ModuleA::ModuleB::ClassOne
和ModuleA::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_get,Modulet#const_set
关于ruby-on-rails - 我可以使用Rails将字符串转换为类吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47946130/