5

私はそのようなことをする必要があります

class Foo
 define perform()
  puts 'hello'
 end
end

classname = 'Foo'

instance = create_instance(classname)
instance.perform();

そのようなことは可能ですか。場合はどのようにですか?

どうもありがとう!

4

3 に答える 3

7

使用できますconst_get

instance = Object.const_get(classname).new
instance.perform
于 2012-05-12T23:27:29.873 に答える
3

はい、可能です-

class Foo
  def perform
    puts 'hello'
  end
end

f = 'Foo'

klass = Object.const_get f

f.new.perform
于 2012-05-12T23:27:17.763 に答える
3

Module#const_getを使用できます

klass = Object.const_get(classname)
instance = klass.new

ただし、クラス名がユーザー入力によるものである場合は、最初にクラス名をホワイトリストに登録することをお勧めします。そうしないと、セキュリティ ホールが開く可能性があります。

于 2012-05-12T23:29:26.327 に答える