【问题标题】:Convert string to class name without using eval in ruby?将字符串转换为类名而不在 ruby​​ 中使用 eval?
【发布时间】:2014-07-01 11:38:24
【问题描述】:

我有这样的事情:

string = "Post"

我想将字符串转换为类名文字。我像这样使用 eval 来转换字符串:

eval(string) #=> Post

作为一名 javaScript 开发人员,我尽量避免使用 eval。在 Ruby 中有没有更好的方法来做到这一点?还是使用 eval 是处理此问题的首选方式?

【问题讨论】:

标签: ruby string class eval


【解决方案1】:

使用Module.const_get

string = "Fixnum"
clazz = Object.const_get(string)
clazz.name # => "Fixnum"

如果你在 Rails 上下文中,你也可以在字符串上使用 `#constantize 方法

clazz = string.constantize # => Fixnum

【讨论】:

  • constantize 比别人好
【解决方案2】:

你可以试试

class Post
end

Object.const_get("Post")

返回 Post

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    相关资源
    最近更新 更多