動態類建立

可以通過使用 Class.new 動態建立類。

# create a new class dynamically
MyClass = Class.new

# instantiate an object of type MyClass
my_class = MyClass.new

在上面的示例中,建立了一個新類並將其分配給常量 MyClass。可以像任何其他類一樣例項化和使用此類。

Class.new 方法接受 Class,它將成為動態建立的類的超類。

# dynamically create a class that subclasses another
Staffy = Class.new(Dog)

# instantiate an object of type Staffy
lucky = Staffy.new
lucky.is_a?(Staffy) # true
lucky.is_a?(Dog)    # true

Class.new 方法也接受一個塊。塊的上下文是新建立的類。這允許定義方法。

Duck = 
  Class.new do
    def quack
      'Quack!!'
    end
  end

# instantiate an object of type Duck
duck = Duck.new
duck.quack # 'Quack!!'