在D中,什么';私人导入和普通导入的区别是什么?
在D编程语言中,它们之间的区别是什么在D中,什么';私人导入和普通导入的区别是什么?,d,D,在D编程语言中,它们之间的区别是什么 private import tango.io.File; 及 在D2.0中,私有导入与导入同义,而不是公共导入。默认情况下,导入是私有的。见 编辑:默认情况下,导入也是私有的。有一段时间,导入默认为公共的;也就是说,当您导入另一个模块时,它的内容不仅可以从您的模块中看到,还可以从导入您的模块的任何模块中看到 最终,它被更改为默认情况下是私有的 但是,手动指定private有几个原因: 如果导入处于公共上下文中,则可以将其设置为公共。例如: public:
private import tango.io.File;
及
在D2.0中,
私有导入
与导入
同义,而不是公共导入
。默认情况下,导入是私有的。见
编辑:默认情况下,导入也是私有的。有一段时间,导入默认为
公共的
;也就是说,当您导入另一个模块时,它的内容不仅可以从您的模块中看到,还可以从导入您的模块的任何模块中看到
最终,它被更改为默认情况下是私有的
但是,手动指定private
有几个原因:
公共
上下文中,则可以将其设置为公共
。例如:
public:
// Lots of stuff
import blah; // oh no, everyone can see my imports!
换句话说,他们在Tango中可能是私有的,因为开发人员与DMD合作的时间太长了,他们不相信DMD能把这件事做好。re pt 2你说的是D2还是D1?我不使用D2。也就是说,如果D2没有同样的问题,我会有点惊讶;DMD1.x和DMD2.x是从相同的源代码构建的,只是具有不同的预处理器定义。据我所知,导入在1.x和2.x之间并没有真正改变。似乎是显式导入符号,这些符号在导入模块中成为公共符号。例如,模块2
导入模块1:Foo
,模块3导入模块1;导入模块2代码>导致冲突的Foo
。(这里Foo
是一个类名,我的dmd版本2.059。)
public:
// Lots of stuff
import blah; // oh no, everyone can see my imports!