> -----Original Message----- > From: Logan Capaldo [mailto:email@example.com] > Sent: Thursday, May 11, 2006 5:18 PM > To: ruby-talk ML > Subject: Re: final/closed classes in Ruby (was: Sharp knives and glue) > Unfortunately, it raises an exception way too late. Too late for whom? Yes, you can get around it, but you have to go out of your way to do so. Dan This communication is the property of Qwest and may contain confidential or privileged information. Unauthorized use of this communication is strictly prohibited and may be unlawful. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy all copies of the communication and any attachments.
on 2006-05-12 16:07
on 2006-05-12 21:45
On May 12, 2006, at 10:05 AM, Berger, Daniel wrote: > of your way to do so. > in error, please immediately notify the sender by reply e-mail and > destroy > all copies of the communication and any attachments. > I'm defining too late as 'after the damage has been done', e.g. Bar has already been sub-classed. I guess it comes down to a question of does final mean no sub-classes can be created, or no sub-classes can be used? If it means the first, than yes it is too late. I think that the distinction is especially important in Ruby because we do have these #inherited style hooks, and inheriting from something can cause all sorts of side effects (e.g. activerecord). If someone does something like class A < SomeClassFullOfDeepMagic final # don't want any subclasses of A end class B < A end and expects it to work, they may be in for a rude surprise, since the deep magic may still happen, despite the fact that an exception is raised.