From: Eric Hodel Date: 2005-08-21T05:36:56+09:00 Subject: Re: Non-overridable and non-redefinable methods On 20 Aug 2005, at 11:22, Eric Mahurin wrote: > Using the same private/protected/public/localized way for > tagging methods, here is what I'm talking about: > > class C > def a; "a"; end > > # can't be redefined > freeze_method :a > > def b; "b"; end > > # can't be overriden in derived classes > # should also imply that you can't redefine > final :b > > end > > Having the ability to prevent methods from being redefined is > really just a subset of what Class#freeze does. Having the > ability to prevent methods from being overridden is new and at > least useful in a few methods in Object. What happens when there is a bug in a 3rd-party library that I want to fix by overriding a method, but they've frozen it or made it final? I don't want to maintain patches for 3rd-party libraries, I'd have to install those patches on N machines. Ruby without these new things doesn't get in your way and lets you just fix it because classes are open. This addition lets you lock parts of the code up so you can't fix them without great difficulty and pain. I don't see how this is a win. -- Eric Hodel - drbrain@segment7.net - http://segment7.net FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04