Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > library _builtin > class Class > new
new(superclass = Object) -> Class
new(superclass = Object) {|klass| ... } -> Class
新しく名前の付いていない superclass のサブクラスを生成します。
名前のないクラスは、最初に名前を求める際に代入されている定数名を検 索し、見つかった定数名をクラス名とします。
p foo = Class.new # => #<Class:0x401b90f8> p foo.name # => "" Foo = foo # ここで p foo すれば "Foo" 固定 Bar = foo p foo.name # => "Bar" ("Foo" になるか "Bar" になるかは不定)
ブロックが与えられた場合、生成したクラスを引数として クラスのコンテキストでブロックを実行します。以下のコードと同じです。
klass = Class.new(superclass) klass.module_eval {|m| ... } klass
この場合も生成したクラスを返します。 ブロックの実行は Class#initialize が行います。
例:
k = Class.new{|c| def initialize p "in initialize" end def hoge p "hoge hoge hoge" end } o = k.new #=> "in initialize" o.hoge #=> "hoge hoge hoge"