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