# 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.
# 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.
Like initialize. Or create objects of that type.
I would make sure that Prototype's new method would create a new class
Thanks,
Ben
--
Posted via http://www.ruby-forum.com/\.
If I'd seen that before I implemented mine, I would have just shown
that. However I already have another one. I did borrow some ideas from
that one. Here goes:
class PrototypeClass
attr_reader :prototype
def initialize (*prototype) @prototype = prototype[0]
end
def new (*definitions)
new_class = Class.new(self.class)
for definition in definitions
new_class.module_eval definition
end
return new_class.new(self)
end
def def (definition)
self.class.module_eval "def #{definition} end"
end
def include (mod)
self.class.module_eval "include #{mod}"
end
end