けいじゅ@日本ラショナルソフトウェアです.

In [ruby-list :9671 ] the message: "[ruby-list:9671] Re: how to create
a instance dinamically using String class. ", on Sep/23 02:38(JST)
ttate / jaist.ac.jp writes:

>立石です。
>
>taru> 文字列を与えてクラスのインスタンスを作れませんか?
>taru> 
>taru> Javaで書くと以下みたいな感じです。
>taru> 
>taru> Class clazz = Class.forName("NewClass");
>taru> Object obj = clazz.newInstance();
>
>一応、 String -> Class -> Object を満たすなら、、、
>
>clazz = eval("NewClass")
>obj = clazz.new
>
>一行だと
>
>obj = eval("NewClass").new
>
>とかはどうでしょう?

何かちょっと違うみたいですね.

clazz = eval("class NewClass; end")
obj = clazz.new

ですね.

あと,

clazz = Class.new
obj = clazz.new

でも. OKです. ただ. これだと名無しのクラスになっちゃいます. Rubyの場合
名前無しのクラスでも問題ないと思いますが, どうしても名前を付けたければ...

Rubyの場合クラスの名前 == クラス定数名 なので適当なクラス定数に代入す
ることによってクラス名をつけることができます.

NewClass = Class.new
obj = class.new

ただ, これだと文字列でクラス名を設定したことになりませんので:

Object.const_set("NewClass", Class.new)
obj = NewClass.new

って感じかな... 

# オリジナルよりもかえって分かりにくい(^^;;;

__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju / rational.com <<---