首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从ruby中的字符串名创建类实例?

如何从ruby中的字符串名创建类实例?
EN

Stack Overflow用户
提问于 2011-05-08 06:47:04
回答 4查看 58.9K关注 0票数 130

我有一个类的名称,我想创建该类的一个实例,这样我就可以遍历该类的模式中存在的每个rails属性。

我该怎么做呢?

  1. 我有一个字符串形式的类名我想要检查
  2. 我猜我需要实例化一个类实例,这样我就可以
  3. 循环遍历它的属性并打印它们。
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-08 06:56:36

在rails中,您只需执行以下操作:

代码语言:javascript
复制
clazz = 'ExampleClass'.constantize

在纯红宝石中:

代码语言:javascript
复制
clazz = Object.const_get('ExampleClass')

使用模块:

代码语言:javascript
复制
module Foo
  class Bar
  end
end

您将使用

代码语言:javascript
复制
> clazz = 'Foo::Bar'.split('::').inject(Object) {|o,c| o.const_get c}
  => Foo::Bar 
> clazz.new
  => #<Foo::Bar:0x0000010110a4f8> 
票数 243
EN

Stack Overflow用户

发布于 2011-05-08 06:57:04

在Rails中非常简单:使用String#constantize

代码语言:javascript
复制
class_name = "MyClass"
instance = class_name.constantize.new
票数 15
EN

Stack Overflow用户

发布于 2011-05-08 06:59:36

试试这个:

代码语言:javascript
复制
Kernel.const_get("MyClass").new

然后循环遍历对象的实例变量:

代码语言:javascript
复制
obj.instance_variables.each do |v|
  # do something
end
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5924495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档