what's the difference between 'static import =' and 'import ='?

Bruno Medeiros brunodomedeirosATgmail at SPAM.com
Thu Jul 20 09:42:51 PDT 2006


Don Clugston wrote:
> 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.
> 

I know, that's what I call the fqnall trick. :)
(news://news.digitalmars.com:119/e8r8tt$10cf$3@digitaldaemon.com)

-- 
Bruno Medeiros - CS/E student
http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D



More information about the Digitalmars-d-learn mailing list