Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Classクラス > new

singleton method Class.new

new(superclass = Object) -> Class[permalink][rdoc]
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 が行います。

[PARAM] superclass:
生成するクラスのスーパークラスを指定します。

例:

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"