what's the difference between 'static import =' and 'import ='?
pragma
pragma_member at pathlink.com
Wed Jul 19 10:02:06 PDT 2006
In article <e9kp1b$hcm$1 at digitaldaemon.com>, Boris Wang says...
>
>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
> ...
>}
>
This won't work because its not guaranteed to be non-ambiguous. Thanks to how D
layous out namespaces, the FQN "std.stdio.writefln" isn't necessarily the method
"writefln" in module "std.stdio". For example, the following module:
// std.d
module std;
struct stdio{
class writefln{
static opCall(){ /*...*/ }
}
}
.. could be placed on DMD's include path and match the 'implicit' import you
describe above.
This more or less requires a series of compiler behaviors, none of which are a
really good idea IMO. Should the compiler accept all possible variants of an
FQN for matching, then you get this in the worst case for *every* FQN:
- Parse *all* files on the current include path for matching FQN's
- Report an ambiguious match as either an error or warning
- In the case of a warning, pick one of the matching modules for inclusion and
continue.
- EricAnderton at yahoo
More information about the Digitalmars-d-learn
mailing list