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

aka*_*nuk 1 module d

我正在寻找private属性工作,而不是类成员,而是模块实体.函数,类,枚举器等

例如,在二郎有一个出口属性,它是这样的:-export([fun1, fun2])只有意fun1fun2的模块中的所有功能,将出口.在D中,一切似乎都是默认导出的,这没关系,但有没有办法防止特定的东西呢?

Ada*_*ppe 6

在导入的模块中,您可以将任何内容标记为私有,以防止其他模块访问它.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
}
Run Code Online (Sandbox Code Playgroud)