## Tcl8.6.17/Tk8.6.17 Documentation > Tcl Commands > variable

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

### NAME

variable — 名前空間の変数を生成し初期化する create and initialize a namespace variable

### 構文 SYNOPSIS

variable name

variable ?name value...?

### 説明 DESCRIPTION

通常､この命令は名前空間内に1つ或はそれ以上の変数を生成する namespace eval 命令内で使用される｡各変数 name は 値 value で初期化される｡最後の変数の値 は省略可能である｡ This command is normally used within a namespace eval command to create one or more variables within a namespace. Each variable name is initialized with value. The value for the last variable is optional.

変数 name が実在しない場合はそれが生成される｡この場合､値 value が指定されていると､新しく生成される変数に代入(assigned)される｡もし､値 value が指定されていないと､新しい変数は未定義のままである｡もし､変数が既に実在すると､値 value が指定されている場合には値 value が設定され､値 value が指定されていない場合は変更されずに残される｡通常名前 name が修飾されていない(そのどの部分にも､どのような名前空間を含む名前も､含んでない)と､その変数は､現在の名前空間の中に生成される｡名前 が何かの名前空間修飾子を含んでいる場合､その変数は指定された名前空間に生成される｡変数が定義されていない場合､ namespace which 命令には検知されるが､ info exists 命令には検知されない｡ If a variable name does not exist, it is created. In this case, if value is specified, it is assigned to the newly created variable. If no value is specified, the new variable is left undefined. If the variable already exists, it is set to value if value is specified or left unchanged if no value is given. Normally, name is unqualified (does not include the names of any containing namespaces), and the variable is created in the current namespace. If name includes any namespace qualifiers, the variable is created in the specified namespace. If the variable is not defined, it will be visible to the namespace which command, but not to the info exists command.

もしこの variable 命令が Tcl 手続函数内で実行された場合､対応する名前空間の変数に連結した局所変数を生成する(従って､これらの変数は info vars によって列挙される)｡この意味で､variable 命令は､ global 命令に似ている､但し､ global 命令は､変数名を､現在の手続き函数の名前空間ではなく大域名前空間について定める｡もし､何らかの値 が与えられると､それは､関連する名前空間の変数の値の修正に使用される｡もし､名前空間の変数が実在しない場合は､生成され必要に応じて初期化される｡ 　　 If the variable command is executed inside a Tcl procedure, it creates local variables linked to the corresponding namespace variables (and therefore these variables are listed by info vars.) In this way the variable command resembles the global command, although the global command resolves variable names with respect to the global namespace instead of the current namespace of the procedure. If any values are given, they are used to modify the values of the associated namespace variables. If a namespace variable does not exist, it is created and optionally initialized.

名前 引数 name は配列内の要素を参照できない｡その場合､名前 name は配列全体を参照しておき､初期化値 value は与えずにしておく｡変数が宣言された後は､配列内の要素は､通常の set や array 命令を使用して設定できる｡ A name argument cannot reference an element within an array. Instead, name should reference the entire array, and the initialization value should be left off. After the variable has been declared, elements within the array can be set using ordinary set or array commands.

### 用例 EXAMPLES

名前空間内に変数を生成する: Create a variable in a namespace:

    namespace eval foo {
        variable bar 12345
    }

名前空間内に配列を生成する: Create an array in a namespace:

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

名前空間内の変数を手続函数から使用する: Access variables in namespaces from a procedure:

    namespace eval foo {
        proc spong {} {
            # この名前空間の変数
            # Variable in this namespace
            variable bar
            puts "bar is $bar"

            # 余所の名前空間の変数
            # Variable in another namespace
            variable ::someNS::someAry
            parray someAry
        }
    }

### SEE ALSO

global, namespace, upvar

### KEYWORDS

global, namespace, procedure, variable
Copyright © 1993-1997 Bell Labs Innovations for Lucent Technologies
Copyright © 1997 Sun Microsystems, Inc.