[#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: Austin Ziegler <halostatue@...>
Date: 2005-08-21 12:30:54 UTC
List: ruby-core #5602
On 8/20/05, TRANS <transfire@gmail.com> wrote:
> On 8/20/05, Austin Ziegler <halostatue@gmail.com> wrote:
>> On 8/20/05, TRANS <transfire@gmail.com> wrote:
>>> One could argue that no methods should be redefinable. That classes
>>> ought to be subclassed if they are to change at all. I think there
>>> is good support for this. Furthermore, if there is such a thing as a
>>> proper means of class alternation it is surely AOP.
>> But then one isn't arguing about Ruby, but something that I wouldn't
>> want to use.
> No, why would that be? If you can achieve the same things, where would
> the difference lie? In other words, if you couldn't _redefine_
> methods, but you could _wrap_ them, the end effect would be the same.

No, it wouldn't be. Some of what I do would go away if rdoc gained
attribute notation, but you'll sometimes see me do:

  attr_accessor :foo
    # The ; is because of a vim limitation that I haven't bothered to
    # find and fix yet.
  remove_method :foo= ;
  def foo=(f) #:nodoc:
    ...
  end

But the ability to change the meaning of a method after it's been
initially defined *can* be useful, especially when you get to
metaprogramming. Some of it might be solveable with AOP, but not all of
it. The combination of AOP and subclassing is certainly insufficient to
match the full power of method redefinition.

> And remember you can still subclass and override. And if you really
> have a lot of heavy changes to make, well, then its probably the right
> time to get out the old Cut & Paste :-)

That sounds like someone trying to defend their pet idea more than
someone who is being pragmatic.

-austin
-- 
Austin Ziegler * halostatue@gmail.com
               * Alternate: austin@halostatue.ca


In This Thread