在D中,私有导入和普通导入之间有什么区别?

low*_*key 7 d

在D编程语言中,有什么区别

private import tango.io.File;
Run Code Online (Sandbox Code Playgroud)

import tango.io.File;
Run Code Online (Sandbox Code Playgroud)

DK.*_*DK. 7

有一段时间public默认进口; 也就是说,当您导入另一个模块,它的内容将不仅是从你的模块中,还从进口任何模块可见你的模块.

最后,它被更改为private默认情况下.

但是,有几个原因需要手动指定private:

  1. public如果它们在public上下文中,则可以进行导入.例如:

    public:
    
    // Lots of stuff
    
    import blah; // oh no, everyone can see my imports!
    
    Run Code Online (Sandbox Code Playgroud)
  2. DMD充斥着与导入相关的错误.例如,选择性导入默认是公开的,尽管据称是私有的.这可能导致各种可怕的噩梦场景,其中一个模块中公开导入的符号(错误地)会导致完全不同模块中的符号简单地消失并破坏您的程序.

换句话说,他们可能private在Tango,因为开发人员与DMD合作的时间太长,不能相信它能让这些东西正确.