The following message is a courtesy copy of an article that has been posted to comp.lang.misc as well. Hi, Dave Thomas <Dave / Thomases.com> writes: |> some classes do not invoke `initialize' in their `new' |> method. They are Array, Regexp, IO (and its subclasses), |> Hash, String, Thread, Class, and Module. |> # I'm feeling something left. |Is this a performance thing? It seems like something of a surprise |waiting to happen. Two reasons: * performance, as you guessed. * these classes define their own version of `new' rather than using generic `new' defined in Object class. these `new' methods use argument to allocate object, before calling `initialize' if any. The latter is more significant. The `initialize' trick works well only if the arguments are used to initialize, not to allocate object. For example, `new' of Array class uses its argument to determine allocation size of internal buffer. Calling `initialize' in the method is useless, because meaning of an argument is already fixed. I grad to hear if there's other good way to resolve it, preferably being compatible. matz.