Import concerns revisited

Tom S h3r3tic at remove.mat.uni.torun.pl
Sun Jul 9 12:31:53 PDT 2006


Walter Bright wrote:
> kris wrote:
>>      // "locale." prefix required (great for IFTI modules)
>> import lib.text.locale as locale;
>> auto utc = locale.utcTime();
>> auto dst = locale.daylightSavings();
>>
>>      // selective import
>> with lib.text.locale import Time, Date;
>> auto time = new Time;
>> auto date = new Date;
>>
>>      // selective import with alias
>> with lib.text.locale import Time, Date as MyDate;
>> auto time = new Time;
>> auto date = new MyDate;
>>
>> ==================================
>>
>> How about it?
> 
>       // "locale." prefix required (great for IFTI modules)
> static import lib.text.locale;
> alias lib.text.locale locale;
> auto utc = locale.utcTime();
> auto dst = locale.daylightSavings();
> 
>      // selective import
> static import lib.text.locale;
> alias lib.text.locale.Time Time;
> alias lib.text.locale.Date Date;
> auto time = new Time;
> auto date = new Date;
> 
>      // selective import with alias
> static import lib.text.locale;
> alias lib.text.locale.Time Time;
> alias lib.text.locale.Date MyDate;
> auto time = new Time;
> auto date = new MyDate;
> 
> These are semantically identical. The "static import" is a bit ugly 
> looking, ok. It's a little wordier, ok. But it does work and produces 
> exactly the results you asked for.

Are they really semantically identical ?



with lib.text.locale import Time, Date;
auto time = new Time;
auto date = new Date;

auto foo  = new lib.text.locale.Foo;    // error




static import lib.text.locale;
alias lib.text.locale.Time Time;
alias lib.text.locale.Date Date;
auto time = new Time;
auto date = new Date;

auto foo  = new lib.text.locale.Foo;    // no error



If I understand the 'static import' proposal correctly, these are not 
equivalent :)

Anyway, what is being discussed here is what Python has been doing for 
quite some time. The following seems to work: 
http://docs.python.org/ref/import.html


-- 
Tomasz Stachowiak  /+ a.k.a. h3r3tic +/



More information about the Digitalmars-d mailing list