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