From: "MIYOKAWA, Nobuyoshi" <n-miyo / Tempus.ORG>
Subject: [ruby-list:31534] クラス名からインスタンスを作る方法
Date: Wed, 19 Sep 2001 21:11:43 +0900

るびきちです。

>   あるクラスの名前が分かっているとき、その名前に合致するクラ
> スのインスタンスを作ることは可能でしょうか?
evalはどうでしょう?

>     class_list = [ "Foo", "Bar", "Baz" ]

irb(main):026:0> class Foo; end
nil
irb(main):027:0> class Bar; end
nil
irb(main):028:0> class Baz; end
nil
irb(main):029:0> hash = {}
{}
irb(main):030:0> class_list = [ "Foo", "Bar", "Baz" ]
["Foo", "Bar", "Baz"]
irb(main):031:0> for name in class_list; hash[ name ] = eval( name ).new; end
["Foo", "Bar", "Baz"]
irb(main):032:0> hash[ "Foo" ]
#<Foo:0x402034b0>
irb(main):033:0> hash[ "Bar" ]
#<Bar:0x4020344c>
irb(main):034:0> hash[ "Baz" ]
#<Baz:0x402033e8>

るびきち☆
http://voo.to/ruby/ ←Ruby大衆化計画(笑)