From: "Guy N. Hurst" Date: 2002-04-21T13:38:44+09:00 Subject: Re: problem with alias "Hal E. Fulton" wrote: > ... > > In short, > > > > alias old_meth meth > > alias old_meth meth > > > > will result in meth being lost forever. > > [snip example] > > That's interesting. I never thought of that. > > A workaround (if you see this happening) > would be to check whether the target is > defined first... > > if !defined? meth then alias oldmeth meth end > > Clunky, yes. > > And don't be tempted to use the modifier form: > > alias oldmeth meth if !defined? oldmeth > > It won't work. Think why. :) > Did you try both these workarounds? I already tried these and others, to no avail. It still performed the alias as if no check was done. irb(main):114:0> class String irb(main):115:1> if !defined? oldsize then alias oldsize size end irb(main):116:1> def size irb(main):117:2> print "new version:" irb(main):118:2> oldsize irb(main):119:2> end irb(main):120:1> end nil irb(main):121:0> "".size new version:new version:0 irb(main):122:0> class String irb(main):123:1> if !defined? oldsize then alias oldsize size end new version:new version:new version:irb(main):124:1> def size new version:irb(main):125:2> print "new version:" new version:irb(main):126:2> oldsize new version:irb(main):127:2> end irb(main):128:1> end nil irb(main):129:0> "".size new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:new version:ne > As for the send_original idea, I think that's not such > a bad idea... would it be practical to make this one > method "fixed in place" (can't be aliased, redefined, > or removed?). That would fix the infinite regression > problem and would not necessitate a new keyword. > But maybe to make it fixed will require a new keyword? > Just a thought. No doubt Matz has a better idea. > I hope so. Guy N. Hurst