2016-09-16 77 views
0

我正在開發一個Tcl-Tk項目並且有一些命名空間。但主要部分(影響整個程序的主窗口和設置)目前在全局命名空間中。現在我想知道什麼是全局命名空間變量的最佳方式:在tcl中使用全局變量或命名空間變量會更好嗎?

proc TestVariable {} { 
    global MyVar 
    variable MyVar 
    ... 
} 

TestVariable在全局命名空間,這兩個變種會達到同樣的效果。我對麼?如果是這種情況,哪個變種更好用?

+1

'global'定義了全局變量,'variable'定義了當前的名稱空間變量。混合他們不是好主意。 – Chpock

回答

0

全局變量是全局名稱空間中的名稱空間變量。全局名稱空間有點特別,因爲它是默認情況下在其他名稱空間中顯示的地方;這就是你想要的命令(以及你不想要的變量,這就是爲什麼你應該使用variable命令聲明命名空間變量)。

通常,最好爲屬於應用程序的事物保留全局名稱空間,並將任何具有更多受限制適用性的事物放在其他名稱空間中。如果你正在編寫庫代碼,絕對是把它放在一個命名空間(通常與庫包名稱相同)。這可以防止很多混淆。