## Tcl8.6.17/Tk8.6.17 Documentation > [incr Tcl] Package Commands, version 4.3.4 > scope

### 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

itcl::scope — 変数のための名前空間文脈を捕捉する　　 capture the namespace context for a variable

### 構文 SYNOPSIS

itcl::scope name

### 説明 DESCRIPTION

指定された name の為の有効範囲の値を生成する､但し name は変数の名前でなければならない｡もし name が即値変数であると､有効範囲命令は､object に所属する即値変数としてどのような文脈内でも決定する名前を返す｡この名前の正確な形式は Itcl への内部の詳細である｡この様な有効範囲の名前の使用は､部品と共に即値変数を使用することができるようにする｡譬えば､もし使用者が私的な変数 x の対象を有している場合､入力部品の -textvariable 指示項目と共に x を使用できる｡ itcl3.0 版より前は､共通変数のみがこの方法で使用できただけであった｡　　　　　　 　　　 Creates a scoped value for the specified name, which must be a variable name. If the name is an instance variable, then the scope command returns a name which will resolve in any context as an instance variable belonging to object. The precise format of this name is an internal detail to Itcl. Use of such a scoped value makes it possible to use instance variables in conjunction with widgets. For example, if you have an object with a private variable `x`, and you can use `x` in conjunction with the `-textvariable` option of an entry widget. Before itcl3.0, only common variables could be used in this manner.

もし name が即値変数でない場合は共通変数か大域変数でなければならない｡ その場合､有効範囲命令は変数の完全修飾名を返す｡譬えば､ ::foo::bar::x　とか｡　　　　　　　 If the name is not an instance variable, then it must be a common variable or a global variable. In that case, the scope command returns the fully qualified name of the variable, e.g., `::foo::bar::x`.

もし name が変数として認識されない場合､scope 命令は不都合を返す｡　　　　　　 If the name is not recognized as a variable, the scope command returns an error.

通常の変数名は大域名前空間内の変数を参照する｡ 有効範囲のある値は､後にそれが適切に参照できる様な方法で､その名前空間文脈と一緒に変数名を捕捉する｡ 譬えば､Tk 部品が名前空間内部で使われる時に､変数名前を包含するためにそれが必要とされる: 　　　　 Ordinary variable names refer to variables in the global namespace. A scoped value captures a variable name together with its namespace context in a way that allows it to be referenced properly later. It is needed, for example, to wrap up variable names when a Tk widget is used within a namespace:

    namespace foo {
        private variable mode 1

        radiobutton .rb1 -text "Mode #1"
            -variable [scope mode] -value 1
        pack .rb1

        radiobutton .rb2 -text "Mode #2"
            -variable [scope mode] -value 2
        pack .rb2
    }

ラジオ釦 .rb1 と .rb2 は名前空間 "foo" 内に含まれる変数 "mode" を通して相互参照している｡ scope 命令は､完全修飾した名前 ::foo::mode を返すことにより､これを保障している｡　　　　　　 Radiobuttons `.rb1` and `.rb2` interact via the variable "mode" contained in the namespace "foo". The scope command guarantees this by returning the fully qualified variable name `::foo::mode`.

使用者は縦え命令文を完全に解析したと確信していても､自己の有効範囲の名前を創り込むべきではない｡その代り､使用者は変数名を動的に生成するために常に scope 命令を使用すべきである｡そうすれば､使用者は部品や､使用者の算譜内の短い符号命令にその名前を渡すことができる｡　　　　　　 You should never attempt to craft your own scoped variable names, even if you believe you've flawlessly reverse-engineered the encoding. Instead, you should always use the scope command to generate the variable name dynamically. Then, you can pass that name to a widget or to any other bit of code in your program.

### KEYWORDS

code, namespace, variable
Copyright © 1993-1998 Lucent Technologies, Inc.