tcl/tk參考——變量和過程variable

名稱

variable - 創建和初始化一個名字空間變量

語法

variable ?name value...? name ?value?

描述

這個命令一般在名字空間中創建一個或多個變量,每個變量name使用value初始化,最後一個變量的value是可選的。
 

如果變量name不存在,就創建一個,在這種情況下,如果指定了value,就把它的值賦值給創建的變量,如果不指定value,新的變量name就沒有初始化。如果變量已經存在,就賦值value,沒有指定value則保持原來的值。一般來說name不做任何限定(不包含名字空間限定),並且在當前名字空間中創建,如果name包含有名字空間限定,變量就創建在指定的名字空間中,如果變量沒有定義,對於namespace which命令來說就是可見的,但是對info exists命令來說是不可見的。

如果variable命令在一個tcl過程中執行,就創建一個局部變量,這個局部變量鏈接一個相關的名字空間變量(因此這些變量由info vars列出),這樣variable命令類似global命令,雖然global命令只是鏈接一個在全局範圍內的變量,如果給出了values,就用來修改相關名字空間變量,如果一個名字空間變量不存在,就創建一個並且初始化。

name變元不能引用一個數組的元素,但是name可以引用整個數組並且初始化的value必須符合數組的要求,聲明過變量後,數組中的元素可以使用setarray命令來配置。

示例

在名字空間中創建一個變量:
namespace eval foo {
    variable bar 12345
}

在名字空間中創建一個數組:

namespace eval someNS {
    variable someAry
    array set someAry {
        someName  someValue
        otherName otherValue
    }
}

爲一個過程存取名字空間中的變量:

namespace eval foo {
    proc spong {} {
        # Variable in this namespace
        variable bar
        puts "bar is $bar"

        # Variable in another namespace
        variable ::someNS::someAry
        parray someAry
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章