From: <christopher.j.meisenzahl / citicorp.com> > > I've seen how Ruby uses an initialize() method as a constructor. > > Can this method be overloaded? After playing with IRB I'm assuming it can't? > > > Thanks very much again; Ruby and this list are great. > For better or worse, no method can be overloaded, unless you ask Guy for his modified Ruby :) If you need to branch on type, you can do this def initialize(value) case value when String then ... when Regexp then ... else ... end If you need variable arguments, you can do def initialize (value, *values) process(value) values.each do |v| ... end end Then, of course, there's default arguments: def initialize(size=5, shape=SQUARE, colour=nil, params={}) @colour = nil || @colour || DEFAULT_COLOUR ... end Finally, if your method expects a String, do the following: def initialize(s) process(s.to_s) # Now it can handle numbers, etc, too. end (This doesn't always feel right. Use your judgement in each case.) So there are ways to handle the need for varying parameter lists (a la overloaded methods). None of them are a perfect fit from the point of view of some other languages, but it's pretty rare that the above approaches can't provide a decent solution. Note to FAQ maintainer: this proposed FAQ entry is in response to ruby-talk:56440. Please examine any other responses if/when entering this. Gavin