B
Ben Tilly
Here is what I'd like to do.
anonymous_class = class.new;
# somehow define methods on anonymous_class
# somehow create an object of type anonymous_class
And I'm running into a roadblock. I can create an anonymous class
easily enough, I just can't figure out how to define methods on it.
Like initialize. Or create objects of that type.
Yes, I know about singleton classes, but they don't do what I want
because I also want to create subclasses of these subclasses, and
instances of these subclasses.
As for why I want this, I'm trying to see whether I can figure out how
to implement a decent prototype based class system in Ruby. A friend
says that you can't. I thought that a clean way to do it would be to
create an anonymous class, and create an object Prototype of that class.
I would make sure that Prototype's new method would create a new class
which is a subclass of Prototype's, and an object of that class with the
prototype being the object that new was called on. And Prototype would
have a def method which would define new methods in the class of the
object that def was called on.
And yes, I know I could do this by dynamically creating normal classes
with calls to eval. But I'd prefer to avoid going there.
Thanks,
Ben
anonymous_class = class.new;
# somehow define methods on anonymous_class
# somehow create an object of type anonymous_class
And I'm running into a roadblock. I can create an anonymous class
easily enough, I just can't figure out how to define methods on it.
Like initialize. Or create objects of that type.
Yes, I know about singleton classes, but they don't do what I want
because I also want to create subclasses of these subclasses, and
instances of these subclasses.
As for why I want this, I'm trying to see whether I can figure out how
to implement a decent prototype based class system in Ruby. A friend
says that you can't. I thought that a clean way to do it would be to
create an anonymous class, and create an object Prototype of that class.
I would make sure that Prototype's new method would create a new class
which is a subclass of Prototype's, and an object of that class with the
prototype being the object that new was called on. And Prototype would
have a def method which would define new methods in the class of the
object that def was called on.
And yes, I know I could do this by dynamically creating normal classes
with calls to eval. But I'd prefer to avoid going there.
Thanks,
Ben