我正在開發一個Tcl-Tk項目並且有一些命名空間。但主要部分(影響整個程序的主窗口和設置)目前在全局命名空間中。現在我想知道什麼是全局命名空間變量的最佳方式:在tcl中使用全局變量或命名空間變量會更好嗎?
proc TestVariable {} {
global MyVar
variable MyVar
...
}
當TestVariable
在全局命名空間,這兩個變種會達到同樣的效果。我對麼?如果是這種情況,哪個變種更好用?
我正在開發一個Tcl-Tk項目並且有一些命名空間。但主要部分(影響整個程序的主窗口和設置)目前在全局命名空間中。現在我想知道什麼是全局命名空間變量的最佳方式:在tcl中使用全局變量或命名空間變量會更好嗎?
proc TestVariable {} {
global MyVar
variable MyVar
...
}
當TestVariable
在全局命名空間,這兩個變種會達到同樣的效果。我對麼?如果是這種情況,哪個變種更好用?
全局變量是全局名稱空間中的名稱空間變量。全局名稱空間有點特別,因爲它是默認情況下在其他名稱空間中顯示的地方;這就是你想要的命令(以及你不想要的變量,這就是爲什麼你應該使用variable
命令聲明命名空間變量)。
通常,最好爲屬於應用程序的事物保留全局名稱空間,並將任何具有更多受限制適用性的事物放在其他名稱空間中。如果你正在編寫庫代碼,絕對是把它放在一個命名空間(通常與庫包名稱相同)。這可以防止很多混淆。
您應該限制自己使用大量的全局變量。使用名稱空間來定義變量總是一個好主意。
選中「http://tcl.tk/man/tcl8.5/tutorial/Tcl13.html」。這將爲您提供一些見解並檢查「http://tcl.tk/man/tcl8.5/tutorial/Tcl31.html」以獲取更多詳細信息
'global'定義了全局變量,'variable'定義了當前的名稱空間變量。混合他們不是好主意。 – Chpock