[#5563] Non-overridable and non-redefinable methods — Eric Mahurin <eric_mahurin@...>

Lately, I've been thinking about the future of ruby

44 messages 2005/08/19
[#5564] Re: Non-overridable and non-redefinable methods — Austin Ziegler <halostatue@...> 2005/08/19

On 8/19/05, Eric Mahurin <eric_mahurin@yahoo.com> wrote:

[#5571] Re: Non-overridable and non-redefinable methods — Eric Mahurin <eric_mahurin@...> 2005/08/19

--- Austin Ziegler <halostatue@gmail.com> wrote:

[#5574] Re: Non-overridable and non-redefinable methods — TRANS <transfire@...> 2005/08/20

Just wanted to add a few things.

[#5581] Re: Non-overridable and non-redefinable methods — Austin Ziegler <halostatue@...> 2005/08/20

On 8/19/05, TRANS <transfire@gmail.com> wrote:

[#5583] Re: Non-overridable and non-redefinable methods — "David A. Black" <dblack@...> 2005/08/20

Hi --

[#5585] Re: Non-overridable and non-redefinable methods — Eric Mahurin <eric_mahurin@...> 2005/08/20

--- "David A. Black" <dblack@wobblini.net> wrote:

[#5609] Pathname#walk for traversing path nodes (patch) — ES <ruby-ml@...>

Here is a small addition to Pathname against 1.9, probably suited

20 messages 2005/08/22

Re: Non-overridable and non-redefinable methods

From: Eric Hodel <drbrain@...7.net>
Date: 2005-08-20 20:36:56 UTC
List: ruby-core #5589
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


In This Thread