The following message is a courtesy copy of an article that has been posted to comp.lang.misc as well. matz / netlab.co.jp (Yukihiro Matsumoto) writes: > |If I hadn't read this thread, I'd expect that MyArray.new(3) would > |call MyArray.initialize(6). > > Yes, but you have to stick with size. > > For example, if you want to create initialized SortedArray > by specifying elements like > > ary = SortedArray(1,5,4,3,7,3) > > you just can't. I feel this as restriction. That's true. But in what way is that different to any class where the constructor takes different parameters to it's subclass? class Bert def initialize(a) puts "Bert.initialize(#{a})" end end class Ernie < Bert def Ernie.new(a, b) super(a) end def initialize(a, b) end end Now I know it is bad to override .new like this, but it does happen with other factory methods as well. > Yes. The point is the argument to `new' is shared by both methods. > I think they should belong to `initialize' as much as possible, to > enhance future extensibility. It seems to me that there is little lost by invoking Array.initialize with the two arguments passed to Array.new, and it is more orthogonal to do so. However, I don't feel very strongly about it! > p.s. > I'm getting tired of cross-posting to the list and comp.lang.misc. It's a pain, isn't it. However, it seems that we are getting some attention in news.groups, and there are only 10 days left in the RFD. Regards Dave