Derived-class initialization

Hello all,

I’m having some trouble with extending an existing Ruby class in order
to add functionality. Here’s some example code:

class Graph


def subgraph(*args)
graph = self.new


return graph
end
end

class AwesomeGraph < Graph


def do_something


end
end

g = AwesomeGraph.new
a = g.subgraph(g.nodes)
a.do_something // ERROR! No Graph#do_something exists!

I was hoping ‘self.new’ would take into account the derived class used
upon creation, but it doesn’t.

Any suggestions?


Thanks!
Bryan

2009/3/18 Bryan R. [email protected]



return graph
end
end

This looks suspect, ‘self’ in this method looks like it will refer to
the
Graph instance, not the Graph class. Try self.class.new instead.

Yep… that worked. :slight_smile:


Thanks!
Bryan

James C. wrote:

2009/3/18 Bryan R. [email protected]



return graph
end
end

This looks suspect, ‘self’ in this method looks like it will refer to
the
Graph instance, not the Graph class. Try self.class.new instead.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs