--dcofujwWhIQ0BzlCE1Y
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

I understand the ugliness of eval....but why shouldn't we use it?  It is
much quicker to write, shorter to read, and easier to use.

On Fri, 2006-05-05 at 04:19 +0900, Patrick Hurley wrote:

> On 5/4/06, Patrick Hurley <phurley / gmail.com> wrote:
> > On 5/4/06, Gregory Seidman <gsslist+ruby / anthropohedron.net> wrote:
> > > On Fri, May 05, 2006 at 03:51:39AM +0900, RGR wrote:
> > > } I want to create an object from a class, but the name of that class is
> > > } in a variable, so the form objss.new(args) can't be used. How can it
> > > } be done? Without using eval, because its a bit messy and unelegant.
> > > }
> > > } The equivalent of objariable_with_class_name(args) in php.
> > >
> > > obj  bject::const_get(class_name).new(args)
> > >
> > > } Thanks.
> > > } RGR
> > > --Greg
> > >
> > >
> > >
> >
> > And if args is an array you want to use as individual params:
> >
> > obj  odule.const_get(class_name).new(*args)
> >
> > (note I prefer Module. but both work)
> > pth
> >
> 
> Ara is of course correct, so you end up with something like:
> 
> klass  ar_with_class.to_s.split('::').inject(Module) { |base,klass|
> base.const_get(klass) }
> obj  lass.new(*args)
> 
> If this is a common operation in your code, you could add this into
> Module or some other reasonable place.
> 
> pth
> 
> 



--dcofujwWhIQ0BzlCE1Y--