好像有沒有簡單的方法來防止D的import語句從混濁的全局命名空間:只要你import std.stdio
我可以避免使用D導入來污染公共名稱空間嗎?
module x;
import std.stdio;
void main() {
writeln("Hello!");
}
,writeln
現在是全球性的。來自[language with namespaces]
,這將是很好,如果我只能參考std.stdio.writeln
,特別是在一兩週內,我可以很容易地告訴什麼提供writeln
。
閱讀Namespaces with classes and structs?後,在我看來,這應該做想我(作爲笨拙,因爲它是):
module x;
import std.stdio;
class String {
struct write {
auto println = writeln;
}
}
void main() {
String string = new String();
string.write.println("Hello!");
}
,但我得到Error: variable [...] type void is inferred from initialiser [...], and variables cannot be of type void
,這意味着功能走樣了。如果我寫C,我可以理解命名空間的缺乏(但我仍然可以用結構和點符號來實現它們)。有沒有辦法讓導入的名稱不是如此全球?
只記得'靜態導入'是一件事情。這可能是你正在尋找的東西。 – rcorre
你的意思是 - 你剛剛閱讀我的評論。 ;) – DejanLekic
哎呀,沒有意識到你在我編輯的時候回答了。你的答案可能更好,因爲它削減了追逐的權利:) – rcorre