what's the difference between 'static import =' and 'import ='?
Don Clugston
dac at nospam.com.au
Thu Jul 20 06:35:45 PDT 2006
Bruno Medeiros wrote:
> Boris Wang wrote:
>> "John Reimer" <John_member at pathlink.com>
>> 写入消息新闻:e9knp5$fk1$1 at digitaldaemon.com...
>>> In article <9vh8joe3sla0.1se36qil8397i$.dlg at 40tude.net>, Derek
>>> Parnell says...
>>>> On Wed, 19 Jul 2006 06:14:11 +0000 (UTC), John Reimer wrote:
>>>>
>>>>> In article <e9k8bv$2usv$1 at digitaldaemon.com>, Boris Wang says...
>>>>>> For example:
>>>>>>
>>>>>> * static import io = std.stdio;
>>>>>> * import io = std.stdio;
>>>>>>
>>>>> Good question. Have you tested these first to see what happens or
>>>>> if the first
>>>>> even works? I think that might answer your question. Then you can
>>>>> tell those
>>>>> of us who haven't had a chance to try yet. :)
>>>>>
>>>> There is no difference. They function in an identical manner.
>>>>
>>>> static import XXX;
>>>> import XXX = whatever;
>>>> static import XXX = whatever;
>>>>
>>>> all require that 'XXX' be used to reference members in the code.
>>>>
>>>> However, if you decide to allow non-FQN all you have to do is *add* the
>>>> line 'import XXX;' somewhere in your module and all the FQN
>>>> requirements
>>>> disappear.
>>>>
>>> Ah... ok. Good to know. I guess we have a very flexible system in
>>> place, capable
>>> of accomodating several styles. And Walter gets to have his "static
>>> import" as
>>> well. :)
>>>
>>> -JJR
>>>
>>>
>>>
>>
>> No, I don't think so.
>>
>> Something need refining.
>>
>> Why not discard the sentence 'static import' ? When you need FQN to
>> access a package, just do it.
>>
>> For example
>>
>> int main(void)
>> {
>> std.stdio.writefln("Just do it"); // not need any importing
>> ...
>> }
>>
>>
>
> I like the idea of FQN access automatically available for all modules,
> but the way I'd like that to be done is not for the compiler to try to
> implicitly search and import modules when encountering unknown names
> (like the 'std.stdio.writefln' in the example above).
> Rather, the whole set of modules that a program uses could be set at the
> start, by compiler options (or the fqnall trick). This would avoid the
> name issues mentioned by pragma and Don (the "class std {...}") as well
> as allow an IDE to show completion for the available modules&packages.
Well, you can do this already with a
----
module usingphobos;
public import stdio = std.stdio;
public import string = std.string;
(etc)
----
import usingphobos;
void main()
{
stdio.writefln("Yes it works!");
}
----
All it takes is a single import at the top of each file.
More information about the Digitalmars-d-learn
mailing list