In a message dated 1 Sep 2002, Uri Guttman writes:
> >>>>> "DW" == David Wheeler <[EMAIL PROTECTED]> writes:
>
> DW> On Sunday, September 1, 2002, at 05:30 AM, Damian Conway wrote:
> >> Sure. But the right solution is to permanently eliminate the
> >> sesquipedalian
> >> name (so you don't have to retype it for every single typed variable):
> >>
> >> class Date is Really::Long::Package::Name::Ugh;
>
> DW> Oh, that's nice. As long as one is careful about not creating
> DW> conflicting class names...
>
> but you should always know the classes you are using in a file. and i
> expect that is a lexical map/transform which shouldn't affect the symbol
> table. so only in this file/scope would Date be an alias to that long
> class name.
An alias? Isn't
class Date is Really::Long::Package::Name::Ugh;
a new class declaration, declaring 'Date' as a subclass of
Really::Long::Package::Name::Ugh? Because the class body is empty, i.e.
this line is equivalent to
class Date is Really::Long::Package::Name::Ugh {
};
it will have a similar effect to aliasing Really::Long::Package::Name::Ugh
under the name 'Date', simply because the subclass hasn't redefined any
behavior of the parent. But it *is* a separate class ((new Date()).class
should return 'Date', not Really::Long::Package::Name::Ugh), unless Damian
was saying that there would be some special casing when a class
declaration contains no body.
Furthermore, we haven't seen any final word about export behavior, but the
default is something along the lines of 'public', correct? So if you have
a module or class file containing the above declaration, the class 'Date'
should be exported to users of the module, unless you write it
my class Date is Really::Long::Package::Name::Ugh;
right?
Trey