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

### 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
    info — Tcl 解釈実行機能の状態に関する情報を返す Return information about the state of the Tcl interpreter
  構文 SYNOPSIS
  説明 DESCRIPTION
    info args procname
    info body procname
    info class subcommand class ?arg ...
    info cmdcount
    info commands ?pattern?
    info complete command
    info coroutine
    info default procname arg varname
    info errorstack ?interp?
    info exists varName
    info frame ?number?
      type
        source
        proc
        eval
        precompiled
      line
      file
      cmd
      proc
      lambda
      level
    info functions ?pattern?
    info globals ?pattern?
    info hostname
    info level ?number?
    info library
    info loaded ?interp?
    info locals ?pattern?
    info nameofexecutable
    info object subcommand object ?arg ...
    info patchlevel
    info procs ?pattern?
    info script ?filename?
    info sharedlibextension
    info tclversion
    info vars ?pattern?
  CLASS INTROSPECTION
    info class call class method
    info class constructor class
    info class definition class method
    info class destructor class
    info class filters class
    info class forward class method
    info class instances class ?pattern?
    info class methods class ?options...?
      -all
      -private
    info class methodtype class method
    info class mixins class
    info class subclasses class ?pattern?
    info class superclasses class
    info class variables class
  OBJECT INTROSPECTION
    info object call object method
    info object class object ?className?
    info object definition object method
    info object filters object
    info object forward object method
    info object isa category object ?arg?
      info object isa class object
      info object isa metaclass object
      info object isa mixin object class
      info object isa object object
      info object isa typeof object class
    info object methods object ?option...?
      -all
      -private
    info object methodtype object method
    info object mixins object
    info object namespace object
    info object variables object
    info object vars object ?pattern?
  用例 EXAMPLES
  EXAMPLES WITH OBJECTS
  SEE ALSO
  KEYWORDS

### NAME

info — Tcl 解釈実行機能の状態に関する情報を返す Return information about the state of the Tcl interpreter

### 構文 SYNOPSIS

info option ?arg arg ...?

### 説明 DESCRIPTION

この命令は､Tcl 解釈実行機能の種々の内部的情報をもたらす｡適正な指示項目(短縮形もありうる)は: This command provides information about various internals of the Tcl interpreter. The legal options (which may be abbreviated) are:

info args procname
  手続函数 procname の引数の名前をその順に含むリストを返す｡ procname はTcl 命令手続函数の名前でなければならない｡ Returns a list containing the names of the arguments to procedure procname, in order. Procname must be the name of a Tcl command procedure.

info body procname
  手続函数 procname の本体を返す｡ procname はTcl命令手続函数の名前でなければならない｡ Returns the body of procedure procname. Procname must be the name of a Tcl command procedure.

info class subcommand class ?arg ...
  級 class に関する情報を返す｡ subcommand は下の CLASS INTROSPECTION に記述されている｡ Returns information about the class, class. The subcommands are described in CLASS INTROSPECTION below.

info cmdcount
  この解釈実行機能で起動された命令の総数を返す｡　　 Returns a count of the total number of commands that have been invoked in this interpreter.

info commands ?pattern?
  もし､ pattern が指定されないと､現在の名前空間に対して有効範囲内にある､全てのTcl命令(即ち､修飾した名前を使わずに実行可能な)の名前のリストを返す､それには､C言語で記述した組込み命令､及び､ proc 命令を使って定義した手続函数の両方を含む｡もし､ pattern が指定されると､ pattern に合致するような名前のみが返される｡合致は string match と同じ規則を使用して定められる｡ pattern は Foo::print* の様な修飾された名前が可能である｡即ちそれは､二重コロン(::)で分離された名前空間の名前の文字継続を使った特定の名前空間を指定でき､又､その名前空間中の命令の組を指定する為に､末尾が特別の文字に合致する模様を有してもよい｡もし､pattern が適格な名前であると､結果となる命令の名前のリストは､それぞれが特別の名前空間の名前で適格な名前を有し､名前の付いた名前空間内で定義された命令のみが返される｡ If pattern is not specified, returns a list of names of all the Tcl commands visible (i.e. executable without using a qualified name) to the current namespace, including both the built-in commands written in C and the command procedures defined using the proc command. If pattern is specified, only those names matching pattern are returned. Matching is determined using the same rules as for string match. pattern can be a qualified name like Foo::print*. That is, it may specify a particular namespace using a sequence of namespace names separated by double colons (::), and may have pattern matching special characters at the end to specify a set of commands in that namespace. If pattern is a qualified name, the resulting list of command names has each one qualified with the name of the specified namespace, and only the commands defined in the named namespace are returned.

info complete command
  もし､ command が引用符号や､波括弧､角括弧､括弧､配列要素の包記号が片跛で無い､という意味で､完全なTcl命令であれば1を返す｡もし､その命令が完全になっていなければ0が返る｡この命令は典型的には､行毎の入力の環境で､使用者に､複数行に亙る命令を打ち込みを許容する為に使われ; もし､命令が不完全なら､記述譜は､命令を揃える為に追加の行が打ち込まれる迄､評価を遅らすことを可能にする｡ Returns 1 if command is a complete Tcl command in the sense of having no unclosed quotes, braces, brackets or array element names. If the command does not appear to be complete then 0 is returned. This command is typically used in line-oriented input environments to allow users to type in commands that span multiple lines; if the command is not complete, the script can delay evaluating it until additional lines have been typed to complete the command.

info coroutine
  現在実行中のコルーチン coroutine の名前を返す､但し現在何もコルーチンが実行されていないか､現在のコルーチンが削除されていた(が､削除後､正常戻りも yield 戻りもしていない)場合は空文字列を返す｡ 　　　　　　 Returns the name of the currently executing coroutine, or the empty string if either no coroutine is currently executing, or the current coroutine has been deleted (but has not yet returned or yielded since deletion).

info default procname arg varname
  procname は､Tcl命令手続函数でなければならず､ arg は､その手続函数の引数でなければならない｡もし､arg が省略時設定の値を有すると､命令は 0 を返す｡そうでなければ､ 1 を返し､ arg の省略時設定の値を変数 varname に入れる｡ Procname must be the name of a Tcl command procedure and arg must be the name of an argument to that procedure. If arg does not have a default value then the command returns 0. Otherwise it returns 1 and places the default value of arg into variable varname.

info errorstack ?interp?
  算譜的に解析し易い形式で､与えられた解釈実行機能interp内の､又は指定されていない場合は現在の､最後の不都合の棚呼出しのそれぞれの水準で､函数名と引数を返す｡ Returns, in a form that is programmatically easy to parse, the function names and arguments at each level from the call stack of the last error in the given interp, or in the current one if not specified.

  この形式は解析字句と假引数が交互になった偶数個数のリストである｡解析字句は現在の処､ CALL と UP と INNER であるが近い将来他の値も導入されるかもしれない｡ CALL は手続函数呼出しを指し示す､その假引数は info level 0 に相当する､ UP は uplevel 等によって生成された変数の枠内の移動を指し示し､以前の CALL 品目に適用される｡その假引数は水準の移動である｡ INNER は “内部文脈” を指し示し､不都合を生じる最も内側の基本子命令かバイト符号命令で､利用できる時の引数に従う｡ CALL と UP は複雑な呼出し経路の継続を許容しているが､INNER は､細分化された仔の式に行ってさえも最も内側の手続函数呼出し内の､障碍のある操作上に留まる｡ This form is an even-sized list alternating tokens and parameters. Tokens are currently either CALL, UP, or INNER, but other values may be introduced in the future. CALL indicates a procedure call, and its parameter is the corresponding info level 0. UP indicates a shift in variable frames generated by uplevel or similar, and applies to the previous CALL item. Its parameter is the level offset. INNER identifies the “inner context”, which is the innermost atomic command or bytecode instruction that raised the error, along with its arguments when available. While CALL and UP allow to follow complex call paths, INNER homes in on the offending operation in the innermost procedure call, even going to sub-expression granularity.

  この情報は３引数 catch に返される辞書の -errorstack 見出し内にも存在する; info errorstack は対話型の tclsh 内の頂上水準の捕捉不能の不都合を取戻す便利な方法である｡ This information is also present in the -errorstack entry of the options dictionary returned by 3-argument catch; info errorstack is a convenient way of retrieving it for uncaught errors at top-level in an interactive tclsh.

info exists varName
  もし､名前が varName の変数が現在の文脈(大域変数でも､局所変数でも)に実在し､既に値を与えられて定義されていれば 1 を返し､それ以外なら 0 を返す｡ Returns 1 if the variable named varName exists in the current context (either as a global or local variable) and has been defined by being given a value, returns 0 otherwise.

info frame ?number?
  この命令は､棚上の全ての枠を､たとえそれが info level から隠蔽されていても､利用できるようにする｡もし､ number が指定されないと､この命令は､命令の枠水準が与える番号を返す｡もし､命令が最高水準で起動されていると､その番号は1である｡もし､ number が指定されていると､棚上の number の水準での命令に関する情報の位置を含んだ辞書が結果になる｡ This command provides access to all frames on the stack, even those hidden from info level. If number is not specified, this command returns a number giving the frame level of the command. This is 1 if the command is invoked at top-level. If number is specified, then the result is a dictionary containing the location information for the command at the numbered level on the stack.

  もし､ number が正(>0)なら､特定の棚水準を選択する(1は､最も外側の活動命令､2はそれを呼んだ命令､以下同様にして info frame 自己として､自身を参照する現在枠水準まで);それ以外は､現在の命令からの相対値(0は､現在の命令､即ち､ info frame 自己､-1はその呼び手､以下同様)｡ If number is positive (> 0) then it selects a particular stack level (1 refers to the outer-most active command, 2 to the command it called, and so on, up to the current frame level which refers to info frame itself); otherwise it gives a level relative to the current command (0 refers to the current command, i.e., info frame itself, -1 to its caller, and so on).

  之は､ info level が如何に動くかと似ている､違いは､この副命令は全ての枠を報告する､恰も､ source の記述譜､ eval, uplevel 等の如く｡ This is similar to how info level works, except that this subcommand reports all frames, like sourced scripts, evals, uplevels, etc.

  註意すべきは､入れ子になった命令､譬えば “foo [bar [x]]” では､ “x” の中で起動された info frame からは､ “x” のみが見えることである｡これは info level についても､不具合棚追跡でも同じである｡ Note that for nested commands, like “foo [bar [x]]”, only “x” will be seen by an info frame invoked within “x”. This is the same as for info level and error stack traces.

  結果の辞書は､下に列挙する様な､指定された意味を値とする鍵語の見出しを含み得る｡: The result dictionary may contain the keys listed below, with the specified meanings for their values:

  type
    この鍵語の見出しは常に存在し､命令の場所についての性質を記述している｡認識できる値は､ source か proc か eval か precompiled である｡ This entry is always present and describes the nature of the location for the command. The recognized values are source, proc, eval, and precompiled.

    source
      その命令が､ source 命令により組込まれた記述譜に発見されることを意味する｡ means that the command is found in a script loaded by the source command.

    proc
      その命令が､ 動的に生成された手続函数本体中に見出されることを意味する｡ means that the command is found in dynamically created procedure body.

    eval
      その命令が､ eval 又は uplevel によって実行されることを意味する｡ means that the command is executed by eval or uplevel.

    precompiled
      その命令が､ 予備コンパイルされた(tbcload 梱包によって組込み可能な)記述譜の中に発見され､それ以上の情報が利用できないことを意味する｡ means that the command is found in a precompiled script (loadable by the package tbcload), and no further information will be available.

  line
    この見出しは､その命令がその中の一部分になっている記述がある行の番号を与える｡この情報は､予備コンパイルされた型には存在しない｡この情報に関して､その[譯註:上記の予備コンパイルされた型の]直前の二つの型は行を記述譜の最初から相対的に数えるのに対して､ source の型については､ファイルの最初から相対的に数える｡ This entry provides the number of the line the command is at inside of the script it is a part of. This information is not present for type precompiled. For type source this information is counted relative to the beginning of the file, whereas for the last two types the line is counted relative to the start of the script.

  file
    この見出しは､ source の型にのみ常に存在する｡その命令があるファイルの標準経路を提供する｡ This entry is present only for type source. It provides the normalized path of the file the command is in.

  cmd
    この見出しは､命令の文字列表現を提供する｡之は､通常は､置換していない形式であるが､ eval に実行された正統的に構成されたリスト(譬えば､ list 命令により生産された如く)では､それ以外の文字列表現では生じないような､置換された形式である｡後の方の正統的な特性を損なわない様に､註意が必要である｡ This entry provides the string representation of the command. This is usually the unsubstituted form, however for commands which are a canonically-constructed list (e.g., as produced by the list command) executed by eval it is the substituted form as they have no other string representation. Care is taken that the canonicality property of the latter is not spoiled.

  proc
    この見出しは､命令が正規のTcl 手順の本体に発見されたときにのみ存在する｡これは､その手順の名前を提供する｡ This entry is present only if the command is found in the body of a regular Tcl procedure. It then provides the name of that procedure.

  lambda
    この見出しは､命令が名前のないTcl 手順即ラムダ(λ)の本体に発見されたときにのみ存在する｡これは､問題になっているラムダの全体の定義を提供する｡ This entry is present only if the command is found in the body of an anonymous Tcl procedure, i.e. a lambda. It then provides the entire definition of the lambda in question.

  level
    この見出しは､問合せた枠が info level から返った対応する枠を有する場合にのみ存在する｡それは､現在の水準からの相対的な､枠の索引を提供する(0と負の数値)｡ This entry is present only if the queried frame has a corresponding frame returned by info level. It provides the index of this frame, relative to the current level (0 and negative numbers).

  註意すべきことは､ファイル中で静的に定義された手続函数については､本体中の命令の位置が報告され､ source の型では更に絶対行番号が報告されるが､ proc の型では報告されない｡静的に入れ子に定義された手順でも同じことが言え､ファイル中の eval 記述譜や､静的に定義された手続函数も同様である｡ A thing of note is that for procedures statically defined in files the locations of commands in their bodies will be reported with type source and absolute line numbers, and not as type proc. The same is true for procedures nested in statically defined procedures, and literal eval scripts in files or statically defined procedures.

  その反対に､手続函数の定義又は､動的に評価した環境の中の評価は､たとえ､外部の動的記述譜の最初から相対的に計数することは可能であっても､その記述譜の初めからの相対的行数を計数する｡その種類の数は通常､より理にかなっている｡ In contrast, procedure definitions and eval within a dynamically evaluated environment count line numbers relative to the start of their script, even if they would be able to count relative to the start of the outer dynamic script. That type of number usually makes more sense.

  この振舞いを記述する別の方法は､位置を基準にしたファイルであって､それはできるだけ深く追跡されており､それが不可能である場合は､その行は可能な最小の eval 又は､手続函数の本体に基いて計数される､理由は､その有効範囲は通常の動的外部有効範囲よりも見つけることは容易であるから｡ A different way of describing this behaviour is that file based locations are tracked as deeply as possible, and where this is not possible the lines are counted based on the smallest possible eval or procedure body, as that scope is usually easier to find than any dynamic outer scope.

  構文形式の {*} は eval のように取り扱われる｡ 即ち､もし､文字リスト引数が与えられると､システムは､リストの語の中の行番号を同様に追跡し､与えられない場合は､全ての行番号はそれぞれの語の初めから相対的に計数される(最小の有効範囲)｡ 　　　　　　 The syntactic form {*} is handled like eval. I.e. if it is given a literal list argument the system tracks the line number within the list words as well, and otherwise all line numbers are counted relative to the start of each word (smallest scope)

info functions ?pattern?
  もし､ pattern が指定されないと､現在定義している数学的函数のリストが返る｡もし､ pattern が指定されると､その名前が pattern に合致するような名前の函数のみが返る｡合致は､string match の為と同じ規則を使用して決定する｡ If pattern is not specified, returns a list of all the math functions currently defined. If pattern is specified, only those functions whose name matches pattern are returned. Matching is determined using the same rules as for string match.

info globals ?pattern?
  もし､ pattern が指定されないと､現在定義されている全ての大域変数のリストが返る｡大域変数は､大域名前空間中の変数である｡もし､ pattern が指定されていると､その名前が pattern に合致するような名前のみが返る｡合致は､string match の為と同じ規則を使用して決定する｡ If pattern is not specified, returns a list of all the names of currently-defined global variables. Global variables are variables in the global namespace. If pattern is specified, only those names matching pattern are returned. Matching is determined using the same rules as for string match.

info hostname
  この起動が実行されている計算機の名前を返す｡註意すべきは､この名前は､ホストにに完全に資格を与えられた領有名であるとは保障されていないことである｡機械が幾つかの異なる名前を有する場合( TCP/IP (DNS) と NetBIOS -を基本にした電網の両方を実装した系では普通にある様に)､ TCP/IP 電網に適した名前が返される｡ Returns the name of the computer on which this invocation is being executed. Note that this name is not guaranteed to be the fully qualified domain name of the host. Where machines have several different names (as is common on systems with both TCP/IP (DNS) and NetBIOS-based networking installed,) it is the name that is suitable for TCP/IP networking that is returned.

info level ?number?
  もし､ number が指定されていないと､この命令は､起動された手続函数の棚の水準の数値､又は､その命令が最高水準で起動されていれば､0 を返す｡もし､ number が指定されると､その結果は､棚の上の number の水準での手続函数呼び出しについて､名前と引数を含むリストを返す｡もし､ number が正数なら､特定の棚水準を選択する(1 は頂を超える活動手続函数､2 はそれを呼んだ手続函数､以下同様); それ以外の場合､現在の相対的水準を与える(0 は現在の手続函数､-1 はその呼び出し手､以下同様)｡棚水準の意味についての更なる情報は uplevel 命令を参照されてたい｡ If number is not specified, this command returns a number giving the stack level of the invoking procedure, or 0 if the command is invoked at top-level. If number is specified, then the result is a list consisting of the name and arguments for the procedure call at level number on the stack. If number is positive then it selects a particular stack level (1 refers to the top-most active procedure, 2 to the procedure it called, and so on); otherwise it gives a level relative to the current level (0 refers to the current procedure, -1 to its caller, and so on). See the uplevel command for more information on what stack levels mean.

info library
  標準 Tcl 記述譜が保存されている外部函数群のディレクトリーの名前を返す｡これは､変数 tcl_library の実際の値であって､ tcl_library の設定の仕方によって変わり得る｡ Returns the name of the library directory in which standard Tcl scripts are stored. This is actually the value of the tcl_library variable and may be changed by setting tcl_library.

info loaded ?interp?
  load 命令で解釈実行機能 interp に､組込れた全ての梱包を記述するリストを返す｡リストのそれぞれの要素は､そこから梱包が積み込まれた元のファイルの名前と､梱包の名前の二要素の副リストである｡静的に組込まれた梱包については､そのファイル名は空文字列になる｡もし､解釈実行機能 interp が省略されると､その手順内の何れの解釈実行機能内に組込まれた全ての梱包の情報が返される｡現在の解釈実行機能内の梱包に該当するリストを得るには interp 引数に空文字列を指定する｡ Returns a list describing all of the packages that have been loaded into interp with the load command. Each list element is a sub-list with two elements consisting of the name of the file from which the package was loaded and the name of the package. For statically-loaded packages the file name will be an empty string. If interp is omitted then information is returned for all packages loaded in any interpreter in the process. To get a list of just the packages in the current interpreter, specify an empty string for the interp argument.

info locals ?pattern?
  もし､ pattern が指定されないと､現在定義された局所変数の全ての名前のリストが返る､現在の手続函数の引数があればそれも含む｡ global と upvar と variable 命令により定義した変数は返ってこない｡もし､ pattern が指定されていると､その名前が pattern に合致するような名前のみが返る｡合致は､string match の為と同じ規則を使用して決定する｡ If pattern is not specified, returns a list of all the names of currently-defined local variables, including arguments to the current procedure, if any. Variables defined with the global, upvar and variable commands will not be returned. If pattern is specified, only those names matching pattern are returned. Matching is determined using the same rules as for string match.

info nameofexecutable
  この応用譜が起動されている二進数ファイルの総経路付き名前を返す｡もしTclがファイルを識別できない時は空文字列が返る｡ Returns the full path name of the binary file from which the application was invoked. If Tcl was unable to identify the file, then an empty string is returned.

info object subcommand object ?arg ...
  対象 object に関する情報を返す｡ subcommand は下の OBJECT INTROSPECTION 内で記述されている｡ Returns information about the object, object. The subcommands are described in OBJECT INTROSPECTION below.

info patchlevel
  大域変数 tcl_patchLevel の値を返す､省略時設定では､そこに Tcl 外部函数の正確な版番号を保持している｡[訳註 info tclversion 及び tcl_patchLevel を参照のこと] 　　　　　 Returns the value of the global variable tcl_patchLevel, which holds the exact version of the Tcl library by default.

info procs ?pattern?
  もし､ pattern が指定されないと､現在の名前空間の中の全ての Tcl 命令手続函数の名前のリストが返る｡もし､ pattern が指定されていると､その名前が pattern に合致するような現在の名前空間の中の手続函数の名前のみが返る｡合致は､string match の為と同じ規則を使用して決定する｡もし､ pattern が何れかの名前空間の区切り記号を含んでいるならば､それは､その中で合致させる為に､現在の名前空間に対して相対的な名前空間(又は､ もし pattern が :: で始まっていたら大域名前空間に相対的な)の選択に使う; 合致模様は最後の名前空間の後の部分と解釈される｡ If pattern is not specified, returns a list of all the names of Tcl command procedures in the current namespace. If pattern is specified, only those procedure names in the current namespace matching pattern are returned. Matching is determined using the same rules as for string match. If pattern contains any namespace separators, they are used to select a namespace relative to the current namespace (or relative to the global namespace if pattern starts with ::) to match within; the matching pattern is taken to be the part after the last namespace separator.

info script ?filename?
  もし､Tcl 記述譜ファイルが現在評価されていると(即ち､ Tcl_EvalFile を活動的に呼んでいるか､又は､ source 命令の活動的起動があるか)､この命令は､処理中の最も内側のファイルの名前を返す｡ filename が指定されている場合､この命令の返り値は､その名前を返す為に､活動的起動の持続期間中に変更される｡これは､仮想的ファイル系の応用に有用である｡そうでない場合､この命令は空文字列を返す｡ If a Tcl script file is currently being evaluated (i.e. there is a call to Tcl_EvalFile active or there is an active invocation of the source command), then this command returns the name of the innermost file being processed. If filename is specified, then the return value of this command will be modified for the duration of the active invocation to return that name. This is useful in virtual file system applications. Otherwise the command returns an empty string.

info sharedlibextension
  このOS上で共有される外部函数群を含むファイルの名前として使用される拡張子を返す(譬えば､ Solarisなら .so )｡もし､共有外部函数群がこのOSで運用されていなければ､空文字が返って来る｡ Returns the extension used on this platform for the names of files containing shared libraries (for example, .so under Solaris). If shared libraries are not supported on this platform then an empty string is returned.

info tclversion
  大域変数 tcl_version の値を返す､それは省略時設定では Tcl 外部函数の主版番号と副番号を保持している｡ [訳註 info patchlevel を参照のこと] 　　　 Returns the value of the global variable tcl_version, which holds the major and minor version of the Tcl library by default.

info vars ?pattern?
  もし､ pattern が指定されないと､現在の有効範囲の全ての変数の名前のリストが返る｡これは､局所及び､現在有効の大域を含む｡もし､ pattern が指定されていると､ pattern に合致するような名前のみが返る｡合致は､string match の為と同じ規則を使用して決定する｡ pattern は Foo::option* の様な修飾が可能である｡即ちそれは､二重コロン(::)で分離された名前空間の名前の文字継続を使った特定の名前空間を指定でき､又､その名前空間中の命令の組を指定する為に､末尾が特別の文字に合致する模様を有してもよい｡もし､pattern が修飾された名前であると､結果の変数名リストは､その名前空間の名前で修飾された名前空間変数にそれぞれ合致する変数を有する｡註意すべきは､現在の可視変数は それが設定されてない場合(譬えば､宣言されているが variable によって設定されていない) “実在” しないかもしれない｡　　　 If pattern is not specified, returns a list of all the names of currently-visible variables. This includes locals and currently-visible globals. If pattern is specified, only those names matching pattern are returned. Matching is determined using the same rules as for string match. pattern can be a qualified name like Foo::option*. That is, it may specify a particular namespace using a sequence of namespace names separated by double colons (::), and may have pattern matching special characters at the end to specify a set of variables in that namespace. If pattern is a qualified name, the resulting list of variable names has each matching namespace variable qualified with the name of its namespace. Note that a currently-visible variable may not yet “exist” if it has not been set (e.g. a variable declared but not set by variable).

#### CLASS INTROSPECTION

次の副命令値が info class に対応している: The following subcommand values are supported by info class:

info class call class method
  class の実装の method の没個性型的な実現値の提供に使われる手段実装の記述を返す(没個性型的な実現値はどの様な対象固有の定義も加えられない級による対象実現値)｡これは四要素のリストのリストであり､それぞれの仔リストは､手段の実装の一般型を記述する語(通常の手段については method の一つ､適用された篩については filter ､未知の手段処理として起動される手段については unknown である)､起動された特定の手段の名前を与える語(それは､ method 型については常に method ､ unknown 型に就いては “unknown” に等しい)､手段を定義する級の完全に修飾した名前を与える語､手段の実現の型を記述する語( info class methodtype を参照されたい)､から構成される｡ 　　　　 Returns a description of the method implementations that are used to provide a stereotypical instance of class's implementation of method (stereotypical instances being objects instantiated by a class without having any object-specific definitions added). This consists of a list of lists of four elements, where each sublist consists of a word that describes the general type of method implementation (being one of method for an ordinary method, filter for an applied filter, and unknown for a method that is invoked as part of unknown method handling), a word giving the name of the particular method invoked (which is always the same as method for the method type, and “unknown” for the unknown type), a word giving the fully qualified name of the class that defined the method, and a word describing the type of method implementation (see info class methodtype).

  註意すべきは､手段の実装が呼び出し連鎖に沿った制御権移動の為に next 命令を実際に使用するかどうかの検査はない｡ 　　　　 Note that there is no inspection of whether the method implementations actually use next to transfer control along the call chain.

info class constructor class
  この副命令は級 class の建設譜の定義の記述を返す｡定義は二要素のリストとして記述されている; 第１要素は建設譜への引数のリストであり､ proc 又は手段の定義への呼出しの引渡しに適した形式ある､第二要素は建設譜の本体である｡もし建設譜が存在しない場合空リストを返す｡ 　　　　 This subcommand returns a description of the definition of the constructor of class class. The definition is described as a two element list; the first element is the list of arguments to the constructor in a form suitable for passing to another call to proc or a method definition, and the second element is the body of the constructor. If no constructor is present, this returns the empty list.

info class definition class method
  この副命令は級 class の名前が method の手段の定義の記述を返す｡定義は二要素のリストとして記述される; 第１要素は手段への引数のリストであり､ proc 又は手段の定義への呼出しの引渡しに適した形式ある､第二要素は手段の本体である｡ 　　　 This subcommand returns a description of the definition of the method named method of class class. The definition is described as a two element list; the first element is the list of arguments to the method in a form suitable for passing to another call to proc or a method definition, and the second element is the body of the method.

info class destructor class
  この副命令は級 class の分解譜の本体を返す｡もし分解譜が実在しない場合は空文字列を返す｡ This subcommand returns the body of the destructor of class class. If no destructor is present, this returns the empty string.

info class filters class
  この副命令は級の上に設定された篩手段のリストを返す｡ 　　　 This subcommand returns the list of filter methods set on the class.

info class forward class method
  この副命令は､ class と呼ばれた級の上に設定された method と呼ばれる転送手段の為の引数リストを返す｡ 　　　 This subcommand returns the argument list for the method forwarding called method that is set on the class called class.

info class instances class ?pattern?
  この副命令は､級 class の現実値のリストを返す｡もし任意的な pattern 引数が存在すると､それは返された現実値のリストを string match の規則に従って合致するよう強制する｡ 　　　 This subcommand returns a list of instances of class class. If the optional pattern argument is present, it constrains the list of returned instances to those that match it according to the rules of string match.

info class methods class ?options...?
  この副命令は､ class と呼ばれた級の上に設定された全ての共通の(即ち､移送された)手段のリストを返す｡次の option のどれかが指定され､どの手段の名前が返されるかを正確に制御する: 　　　 This subcommand returns a list of all public (i.e. exported) methods of the class called class. Any of the following options may be specified, controlling exactly which method names are returned:

  -all
    この -all 旗印が与えられると､手段のリストは､級だけでなく級の上位の級とその混合によって定義された手段をも含むことになる｡ 　　 If the -all flag is given, the list of methods will include those methods defined not just by the class, but also by the class's superclasses and mixins.

  -private
    この -private 旗印が与えられると､手段のリストは､級の私有の(即ち､非顕示の)手段をも含むことになる( -all も同時に与えられると､上位級及び混合をも含む)｡ If the -private flag is given, the list of methods will also include the private (i.e. non-exported) methods of the class (and superclasses and mixins, if -all is also given).

info class methodtype class method
  この副命令は級 class の名前が method の手段の為に使われた実装の型の記述を返す｡結果が method の時､更なる情報が info class definition により発見され､結果が forward の時､更なる情報が info class forward により発見される｡ 　　　 This subcommand returns a description of the type of implementation used for the method named method of class class. When the result is method, further information can be discovered with info class definition, and when the result is forward, further information can be discovered with info class forward.

info class mixins class
  この副命令は､名前が class の級に混合された全ての級のリストを返す｡ 　　　 This subcommand returns a list of all classes that have been mixed into the class named class.

info class subclasses class ?pattern?
  この副命令は､級 class の直接の仔供の級のリストを返す｡指示項目 pattern 引数が存在すると､ string match の規則に沿って合致する様な級が返されるリストを含む｡ 　　　 This subcommand returns a list of direct subclasses of class class. If the optional pattern argument is present, it constrains the list of returned classes to those that match it according to the rules of string match.

info class superclasses class
  この副命令は､級 class の親の級のリストを階層構造の上位の順に返す｡ 　　　 This subcommand returns a list of direct superclasses of class class in inheritance precedence order.

info class variables class
  この副命令は､名前が class の級の為に宣言された変数のリストを返す(即ち､それは自動的に級の手段と､構成譜と､分解譜内に存在する)｡ 　　　 This subcommand returns a list of all variables that have been declared for the class named class (i.e. that are automatically present in the class's methods, constructor and destructor).

#### OBJECT INTROSPECTION

次の副命令値が info object に対応している: 　　　 The following subcommand values are supported by info object:

info object call object method
  object の method の実装を提供するために使われた手段実装の記述を返す｡これは４要素のリストのリストを含む､ここでそれぞれの仔供のリストは､手段の実装の一般型を記述する語(通常の手段については method の一つ､適用された篩については filter ､未知の手段処理として起動される手段については unknown である)､起動された特定の手段の名前を与える語(それは､ method 型については常に method ､ unknown 型に就いては “unknown” に等しい)､手段を定義ことを与える語(級の名前を完全に修飾するか､手段の実装が実例値上にある場合は文字列の対象)､手段の実現の型を記述する語( info object methodtype を参照されたい)､から構成される｡ 　　　 Returns a description of the method implementations that are used to provide object's implementation of method. This consists of a list of lists of four elements, where each sublist consists of a word that describes the general type of method implementation (being one of method for an ordinary method, filter for an applied filter, and unknown for a method that is invoked as part of unknown method handling), a word giving the name of the particular method invoked (which is always the same as method for the method type, and “unknown” for the unknown type), a word giving what defined the method (the fully qualified name of the class, or the literal string object if the method implementation is on an instance), and a word describing the type of method implementation (see info object methodtype).

  註意すべきは､手段の実装が呼び出し連鎖に沿った制御権移動為に next 命令を実際に使用するかどうかの検査はない｡ 　　 Note that there is no inspection of whether the method implementations actually use next to transfer control along the call chain.

info object class object ?className?
  もし className が指定されないと､この副命令は対象 object の級を返す｡もし className があると､この副命令は対象 object がこの級かを示す論理値を返す｡ 　　 If className is unspecified, this subcommand returns class of the object object. If className is present, this subcommand returns a boolean value indicating whether the object is of that class.

info object definition object method
  この副命令は対象 object の名前が method の手段の定義の記述を返す｡定義は二要素のリストとして記述されている; 第１要素は手段への引数のリストであり､ proc 又は手段の定義への呼出しの引渡しに適した形式ある､第二要素は手段の本体である｡ 　　　 This subcommand returns a description of the definition of the method named method of object object. The definition is described as a two element list; the first element is the list of arguments to the method in a form suitable for passing to another call to proc or a method definition, and the second element is the body of the method.

info object filters object
  この副命令は対象の上に設定された篩手段のリストを返す｡ 　　 This subcommand returns the list of filter methods set on the object.

info object forward object method
  この副命令は､ object と呼ばれた対象の上に設定された method と呼ばれる転送手段の為の引数リストを返す｡ 　　 This subcommand returns the argument list for the method forwarding called method that is set on the object called object.

info object isa category object ?arg?
  この副命令は object が特定の範疇に属しているかを検査し､ object 引数がその範疇の基準に合致しているかを指し示す論理値を返す｡適用できる範疇は: 　　　 This subcommand tests whether an object belongs to a particular category, returning a boolean value that indicates whether the object argument meets the criteria for the category. The supported categories are:

  info object isa class object
    これは object が級か否かを返す(即ち､ oo::class かその子供の級の現実値)｡ 　　 This returns whether object is a class (i.e. an instance of oo::class or one of its subclasses).

  info object isa metaclass object
    これは object が級を生産できる級か否かを返す(即ち､ oo::class かその子供)｡ 　　 This returns whether object is a class that can manufacture classes (i.e. is oo::class or a subclass of it).

  info object isa mixin object class
    これは class が直接 object に混合されたか否かを返す｡ 　　　 This returns whether class is directly mixed into object.

  info object isa object object
    これは object が本当に対象であるか否かを返す｡ 　　　 This returns whether object really is an object.

  info object isa typeof object class
    これは class が直接 object の型であるか否かを返す(即ち､ object が class かその子供の級であるか､直接か又は間接か)｡ 　　　 This returns whether class is the type of object (i.e. whether object is an instance of class or one of its subclasses, whether direct or indirect).

info object methods object ?option...?
  この副命令は object と呼ばれる対象の共通(即ち移転された)の手段のリストを返す｡次の､どの手段の名前が返されるかを正確に制御しているどれかの option が指定される: 　　　 This subcommand returns a list of all public (i.e. exported) methods of the object called object. Any of the following options may be specified, controlling exactly which method names are returned:

  -all
    この -all 旗印が与えられると､手段のリストは､対象だけでなく級の上位の級とその混合に加え､それらの級の上位の級によって定義された手段をも含むことになる｡ 　　　 If the -all flag is given, the list of methods will include those methods defined not just by the object, but also by the object's class and mixins, plus the superclasses of those classes.

  -private
    この -private 旗印が与えられると､手段のリストは､対象の私有の(即ち､非顕示の)手段をも含むことになる( -all も同時に与えられると､級をも含む)｡ 　　　 If the -private flag is given, the list of methods will also include the private (i.e. non-exported) methods of the object (and classes, if -all is also given).

info object methodtype object method
  この副命令は対象 object の名前が method の手段の為に使われた実装の型の記述を返す｡結果が method の時､更なる情報が info object definition により発見され､結果が forward の時､更なる情報が info object forward により発見されるかもしれない｡ 　　　 This subcommand returns a description of the type of implementation used for the method named method of object object. When the result is method, further information can be discovered with info object definition, and when the result is forward, further information can be discovered with info object forward.

info object mixins object
  この副命令は､名前が object の対象に混合された全ての級のリストを返す｡ 　　 This subcommand returns a list of all classes that have been mixed into the object named object.

info object namespace object
  この副命令は､名前が object の対象の内部的名前空間の名前を返す｡ 　　　 This subcommand returns the name of the internal namespace of the object named object.

info object variables object
  この副命令は､名前が object の対象の為に宣言された変数のリストを返す(即ち､それは自動的に対象の手段内に存在する)｡ 　 This subcommand returns a list of all variables that have been declared for the object named object (i.e. that are automatically present in the object's methods).

info object vars object ?pattern?
  この副命令は､名前が object の私有の名前空間内の変数のリストを返す｡もし任意附加的な pattern が与えられた時は､それは櫛( string match 展開紋様の構文による)であり､それは返された変数によって構成されたリストである｡註意すべきは､ info object variables によって返されたリストとは異なる; それは､現在削除された(unset)変数路含み得る､どれかの object の対象(又は､その級､上位の級又はその混合)によって自動的に含まれるのではない変数を含む可能性はあるが｡ 　　　　　 This subcommand returns a list of all variables in the private namespace of the object named object. If the optional pattern argument is given, it is a filter (in the syntax of a string match glob pattern) that constrains the list of variables returned. Note that this is different from the list returned by info object variables; that can include variables that are currently unset, whereas this can include variables that are not automatically included by any of object's methods (or those of its class, superclasses or mixins).

### 用例 EXAMPLES

この命令は､Tcl 記述譜に保存するに相応しい手続函数を印刷する: 　　　 This command prints out a procedure suitable for saving in a Tcl script:

    proc printProc {procName} {
        set result [list proc $procName]
        set formals {}
        foreach var [info args $procName] {
            if {[info default $procName $var def]} {
                lappend formals [list $var $def]
            } else {
                # 変数名に空白が含まれても好いようにlistで括っておく
                # Still need the list-quoting because variable
                # names may properly contain spaces.
                lappend formals [list $var]
            }
        }
        puts [lappend result $formals [info body $procName]]
    }

#### EXAMPLES WITH OBJECTS

全ての対象はその級が何かが判っている必要がある; この情報は簡単に抽出可能である: 　　　 Every object necessarily knows what its class is; this information is trivially extractable through introspection:

    oo::class create c
    c create o
    puts [info object class o]
                         → prints "::c"
    puts [info object class c]
                         → prints "::oo::class"

内省の能力は手段の実装が何の級かを見付け如何に定義されたかを得る為に使える｡この手続函数を以下に示す: 　　　 The introspection capabilities can be used to discover what class implements a method and get how it is defined. This procedure illustrates how:

    proc getDef {obj method} {
        foreach inf [info object call $obj $method] {
            lassign $inf calltype name locus methodtype
            # Assume no forwards or filters, and hence no $calltype
            # or $methodtype checks...
            if {$locus eq "object"} {
                return [info object definition $obj $name]
            } else {
                return [info class definition $locus $name]
            }
        }
        error "no definition for $method"
    }

これは定義の調査の別法である; それは手動で手段のリストを階層樹木にまで走査する｡この符号命令は､一つの階層が使われ､混合された複雑な級はないことを仮定している(その様な場合､上述の様に info object call の使用が更に進む簡易な方法である): 　　　 This is an alternate way of looking up the definition; it is implemented by manually scanning the list of methods up the inheritance tree. This code assumes that only single inheritance is in use, and that there is no complex use of mixed-in classes (in such cases, using info object call as above is the simplest way of doing this by far):

    proc getDef {obj method} {
        if {$method in [info object methods $obj]} {
            # Assume no forwards
            return [info object definition $obj $method]
        }
        set cls [info object class $obj]
        while {$method ni [info class methods $cls]} {
            # 単純な場合を想定する
            # Assume the simple case
            set cls [lindex [info class superclass $cls] 0]
            if {$cls eq ""} {
                error "no definition for $method"
            }
        }
        # Assume no forwards
        return [info class definition $cls $method]
    }

### SEE ALSO

global, oo::class, oo::define, oo::object, proc, self, tcl_library, tcl_patchLevel, tcl_version

### KEYWORDS

command, information, interpreter, introspection, level, namespace, object, procedure, variable
Copyright © 1993 The Regents of the University of California.
Copyright © 1994-1997 Sun Microsystems, Inc.
Copyright © 1993-1997 Bell Labs Innovations for Lucent Technologies
Copyright © 1998-2000 Ajuba Solutions
Copyright © 2007-2012 Donal K. Fellows