From: Austin Ziegler Date: 2005-09-30T21:04:04+09:00 Subject: Re: Operator Overloading << On 9/30/05, Robert Klemme wrote: > Austin Ziegler wrote: > > On 9/29/05, matt.hulse@gmail.com wrote: > >> Is there a way to overload '<<' in the Array class? > >> Or perhaps there's a better approach to my problem. I have a class > >> that inherits from Array. I want the user to be able to use my class > >> just like a standard array. However, I want to be able to force some > >> code to run every time a user of my class appends a new item. I was > >> able to overload the '+' operator to do this but it doesn't fit with > >> standard array usage. > > It's generally not considered a good idea to overload. Consider using > > Delegate instead. > Pardon me, but this is nonsense: Matt has *inherited* Array. Of course > you can argue about whether *that* is reasonable, but once you did that > providing your own implementation of a super class method in a derived > class is completely standard OO. There's even a keyword to support this > ("super"). And all of that still works with Delegate. I know, because I *just* did it for some code that won't see the light of day for a while. > If you wanted to question the practice of inheriting classes like Array > and String then I'm completely with you. This doesn't make sense more > often that it does. But I know too little of this particular case to > further comment on that. That's really what I was trying to say here. Yes, the idea is *don't* inherit from Array. You can't overload in Ruby, you can override and you have to call super to make it work, or you have to call it directly with aliasing. -austin -- Austin Ziegler * halostatue@gmail.com * Alternate: austin@halostatue.ca