создавать экземпляры динамически, от имени класса - PullRequest
1 голос
/ 07 ноября 2011

У меня есть программа на Ruby, которая генерирует файлы, содержащие определение модуля:

 # try.rb
 module Test
  class F1
   def initialize arg
     @arg=arg
   end
  end
 end

Теперь я бы хотел, чтобы та же программа создавала экземпляры F1.

Какая идиома для этого?

1 Ответ

7 голосов
/ 07 ноября 2011

load или require файл:

load 'path/to/try.rb'

, затем вы можете использовать Object.const_get, чтобы получить ссылку на объект класса, и использовать его для создания экземпляра:

cls = Object.const_get('Test').const_get('F1')
obj = cls.new('foo')
...