1
我正在尋找類似private
的屬性,它不是與類成員一起工作,而是與模塊實體一起工作。函數,類,統計員等如何防止從我的模塊導入功能?
例如,在二郎有一個出口屬性,它是這樣的:-export([fun1, fun2])
,這意味着只有所有的功能fun1
和fun2
模塊在將出口。在D中,一切似乎都默認導出,這沒問題,但有沒有辦法阻止某些具體的東西?
我正在尋找類似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
}