создать класс динамически, с наследованием и конкретными средствами доступа

Я хотел бы создать функцию «create», которая дает мне следующие возможности:

zoo=[]
zoo << create(:dog,4)
zoo[0].class #Dog class
myDog=zoo[0].new("foobar") #instance of Dog
myDog.legs #4 legs because my dog is a Dog
zoo[0].class.legs #4
zoo[0].class.superclass #Animal
zoo[0].class.superclass.legs #whatever, but they have legs

«create (: dog, 4)» создает новый класс Dog, который наследует Animal и т. д.

Не могли бы вы помочь с этим, казалось бы, простым вопросом о метапрограммировании?

5
задан meagar 8 February 2012 в 18:16
поделиться