我正在寻找类似private
属性的东西,而不是与类成员一起使用,而是与模块实体一起使用。函数,类,枚举器等
例如,在二郎有一个出口属性,它是这样的:-export([fun1, fun2])
只有意义fun1
和fun2
所有的模块中的功能将出口。在D中,默认情况下似乎所有内容都可以导出,可以,但是有什么方法可以防止这种情况的发生吗?
在要导入的模块中,您可以将任何内容标记为私有,以防止其他模块访问它。private在模块级实体上的作用与在类成员上的作用相同-在模块外部不可访问,在模块内部可用。但是,当前它仍然可见,因此它会产生一些愚蠢的错误,例如“来自模块A的私有函数foo与来自模块B的函数foo发生冲突”,从而迫使您消除名称的歧义。(我和其他几个人希望在某个时候进行更改,因为显然这应该不是问题!)
在执行导入的模块中,您不能说“除以下内容外全部导入”,但是可以导入特定名称的列表而不导入其他名称:
import std.stdio : File, writefln;
void main() {
File f; // cool
writefln("hello"); // cool
writeln("hey"); // "Error: 'writeln' is not defined" - the selective import didn't pull this name at all
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句