【问题标题】:create object from class name as string in ruby从类名创建对象作为ruby中的字符串
【发布时间】:2013-12-26 07:08:02
【问题描述】:

我有一个模型源(名称、url、方法) 该程序解析数据源的 url。现在我有不同的类来解析不同类型的 url:rss、xml、ogdata ...

所以我有一个通用接口

new(url) //解析url

getTitle() //获取数据的标题

getPrice() //获取价格

我有四个类 rss、xml、ogdata。这些类位于单独的文件中。这个想法是在我发现不同类型的页面时添加更多类。我想为 url 启动正确的类。

method=source.method //现在我想创建一个方法中指定名称的新类

parser=Rss.new(source.url)//代替这个 //就像是 解析器=.new(source.url)

【问题讨论】:

标签: ruby


【解决方案1】:

您可以尝试使用 const_get。

例如:-

Kernel.const_get("YourClassNameHere").new

*Kernel.const_get("YourClassNameHere")* 将为您提供课程。您可以使用它来实例化该类的新实例。

【讨论】:

    【解决方案2】:
    irb(main):081:0> User.name
    => "User"
    

    然后

    "User".constantize.new(name: 'David')
    
    or
    
    User.name..constantize.new(name: 'David')
    

    【讨论】:

      猜你喜欢
      • 2013-08-18
      • 1970-01-01
      • 2018-12-20
      • 2017-05-02
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      • 1970-01-01
      • 2014-11-22
      相关资源
      最近更新 更多