如何防止从模块中导入功能?

阿卡列努克

我正在寻找类似private属性的东西,而不是与类成员一起使用,而是与模块实体一起使用。函数,类,枚举器等

例如,在二郎有一个出口属性,它是这样的:-export([fun1, fun2])只有意义fun1fun2所有的模块中的功能将出口。在D中,默认情况下似乎所有内容都可以导出,可以,但是有什么方法可以防止这种情况的发生吗?

亚当·鲁珀(Adam D.Ruppe)

在要导入的模块中,您可以将任何内容标记为私有,以防止其他模块访问它。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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章