On Wed, Oct 27, 2004 at 08:34:06PM +0900, Robert Klemme wrote: > > "Michael Neumann" <mneumann / ntecs.de> schrieb im Newsbeitrag > news:20041027102249.GA4281 / miya.intranet.ntecs.de... > > Hi, > > > > I just wanted to tell you that if you do > > > > val.dup rescue val > > > > somewhere in your program, you should probably switch to: > > > > case val > > when Fixnum, nil, true, false > > # non dup-able > > val > > else > > val.dup rescue val > > end > > > > which is much faster if you have lots of non-dupable values. > > While that works and is efficient, I'd prefer any of these two solutions: > > - Remove #dup from types that can't be duped, so we can check with > respond_to? > > - Have #dup return self in these cases (immutable instances anyway). Yes that seems reasonable, as e.g. #freeze does not raise an error on these kind of objects, too. Regards, Michael