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

Reply via email to