From: Francis Hwang Date: 2004-12-04T03:56:59+09:00 Subject: Re: how to create an object of a class you don't know yet "new" is just a class method, and you can call class methods on classes that aren't bound at the time of interpretation. For example: instance = MyClass.new is the same as a_class = MyClass instance = a_class.new So you can do things like: irb(main):001:0> classes = [ String, Hash, Array ] => [String, Hash, Array] irb(main):002:0> grab_bag = classes.collect { |a_class| a_class.new } => ["", {}, []] On Dec 3, 2004, at 1:44 PM, Bradley, Todd wrote: > Hi, I'm just now getting into Ruby's OO-ness, and could use some > advice. > I'm trying to create an object, but which specific class needs to be > determined at runtime. I figured out how to do this by creating a > string and executing it using the "eval" command, but I know there must > be an easier way. My first guess was to do something like > #{answer}.new > but that didn't work. > > > Here's my code: > > > class Foo > def method1 > end > end > > class Bar > def method2 > end > end > > # Pretend this was determined at runtime > answer = "Foo" > > > # There must be a better way of doing this: > > myobj = Object.new # Needs to exist in this scope > mystring = "myobj = #{answer}.new" > > eval mystring > > puts "I just created a #{myobj.class} object." > > > > > Any advice is appreciated. Thanks in advance! > > > Todd. > > Francis Hwang http://fhwang.net/