动态类创建
可以通过使用 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!!'