JCL*_*CLL 0 ruby string class constants
我想用一个Class(不是符号!)索引哈希,如下所示
irb(main):015:0> class Key ;end
=> nil
irb(main):016:0> h={Key => "ok"}
=> {Key=>"ok"}
Run Code Online (Sandbox Code Playgroud)
好.然后,给定Class的名称,作为字符串,我想得到元素:
irb(main):017:0> str="Key"
=> "Key"
irb(main):018:0> h[str]
=> nil
Run Code Online (Sandbox Code Playgroud)
但是(如上所示)这失败了(当然).
所以我的问题是:如何将String转换为实际的类?
如果您正在使用Rails,那么您将找到ActiveSupport的"constantize"来执行您想要的操作.
"String".constantize
=> String
Run Code Online (Sandbox Code Playgroud)
但你可以做类似的事情.
Object.const_get("String")
=> String
Run Code Online (Sandbox Code Playgroud)
你甚至可以在字符串上定义它
class String
def constantize
Object.const_get(self)
end
end
Run Code Online (Sandbox Code Playgroud)
注意:除非你真的需要,否则尽量避免做"eval".