Ruby Language Creazione di classi dinamiche


Esempio

Le classi possono essere create dinamicamente attraverso l'uso di Class.new .

# create a new class dynamically
MyClass = Class.new

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

Nell'esempio sopra, una nuova classe viene creata e assegnata alla costante MyClass . Questa classe può essere istanziata e utilizzata come qualsiasi altra classe.

Il metodo Class.new accetta una Class che diventerà la superclasse della classe creata dinamicamente.

# 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

Il metodo Class.new accetta anche un blocco. Il contesto del blocco è la classe appena creata. Ciò consente di definire metodi.

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

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