12

假设我可以构造一个与现有类匹配的字符串,我该如何调用它?

例如,我有几个类:

  • 我的班级1
  • 我的班级2
  • 我的班级3

我想通过构造一个与其名称匹配的字符串来动态调用它们中的每一个。如果他们都有方法“方法”,我该怎么做这样的事情?:

(1..3).each do |n|
  ("MyClass"+n).methods
end
4

2 回答 2

19

constantize符合要求。你可以在这里阅读更多关于它的信息。在您的情况下,它将类似于:

(1..3).each do |n|
  "MyClass#{n}".constantize.methods
end
于 2012-07-15T07:46:27.230 回答
-3

你也可以做 -

(1..3).each {|n| eval "MyClass#{n}.methods"}
于 2012-07-15T08:11:49.750 回答