Okay,
I figured what you really mend was something like this?
----------
class T
def initialize(a,b,k)
p "#{a} #{b} #{k}"
end
end
module M
T = T
INITIALIZED = {[] => T}
def M.[](*l)
unless INITIALIZED.key? l
s = Class::new (T)
INITIALIZED[l] = s
s.const_set :L, l.dup
s.class_eval %{ def initialize (*r,&b); super (*(L + r),&b) end }
return s
else
return INITIALIZED[l]
end
end
end