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

### 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
    self — 内部の内省呼出し手段 method call internal introspection
  SYNOPSIS
  説明 DESCRIPTION
    self call
    self caller
    self class
    self filter
    self method
    self namespace
    self next
    self object
    self target
  用例 EXAMPLES
  SEE ALSO
  KEYWORDS

### NAME

self — 内部の内省呼出し手段 method call internal introspection

### SYNOPSIS

package require TclOO
self ?subcommand?

### 説明 DESCRIPTION

self 命令は､それがどの様に呼出されるかについての情報を発見する手段を許容する手段を呼出す文脈(即ち､手段､か建設譜か解体譜本体の内部)の内部からのみ使われる｡それは引数 subcommand をとる､それはどの種類の情報が実際望まれているかを告げる; もし引数が省略されるとその結果は恰も self object が起動されたのと同じになる｡対応している副命令は: The self command, which should only be used from within the context of a call to a method (i.e. inside a method, constructor or destructor body) is used to allow the method to discover information about how it was called. It takes an argument, subcommand, that tells it what sort of information is actually desired; if omitted the result will be the same as if self object was invoked. The supported subcommands are:

self call
  現在の呼出し連鎖を実装するために使われる手段実装を記述する二つの要素のリストを返す｡第１要素は現在の手段に関する info object call による報告と同じであり(但し､それぞれ <constructor> と <destructor> として名前が報告されている建設譜と解体譜の内部から有益な値を報告することは除かれる)､第２要素は実際の実装が現在実行されている事を指し示している第１要素の索引である(実行への第１実装は常に索引 0 番である)｡ This returns a two-element list describing the method implementations used to implement the current call chain. The first element is the same as would be reported by info object call for the current method (except that this also reports useful values from within constructors and destructors, whose names are reported as <constructor> and <destructor> respectively), and the second element is an index into the first element's list that indicates which actual implementation is currently executing (the first implementation to execute is always at index 0).

self caller
  その手段が他の手段対象の内部で起動された時､この副命令は対象と手段を記述する三つの要素のリストを返す｡第１要素は対象か手段の級の宣言を記述し､第２要素は含んでいる手段が起動された対象の名前であり､第３要素は手段の名前である(それぞれ建設譜と解体譜を指し示す文字列 <constructor> と <destructor> による)｡ When the method was invoked from inside another object method, this subcommand returns a three element list describing the containing object and method. The first element describes the declaring object or class of the method, the second element is the name of the object on which the containing method was invoked, and the third element is the name of the method (with the strings <constructor> and <destructor> indicating constructors and destructors respectively).

self class
  これは現在の手段がその中で定義されている級の名前を返す｡註意すべきはこれは next によって実装が横断される手段の連鎖に従って変化することになる､もし手段が対象上で定義されている場合､これは失敗する｡　　 This returns the name of the class that the current method was defined within. Note that this will change as the chain of method implementations is traversed with next, and that if the method was defined on an object then this will fail.

  もし現在の対象の級を望む場合､この他の構造を使う必要がある: If you want the class of the current object, you need to use this other construct:

      info object class [self object]

self filter
  櫛の内部で起動された場合､この副命令は篩を記述する三つの要素のリストを返す｡第１要素は櫛を宣言した級又は対象の名前を与え(これは､櫛の実装を提供している対象や級とは異なるかもしれない事に注意すること)､第二要素は宣言している実体が対象か級かにより対象か級であり､第３要素は櫛の名前である｡ When invoked inside a filter, this subcommand returns a three element list describing the filter. The first element gives the name of the object or class that declared the filter (note that this may be different from the object or class that provided the implementation of the filter), the second element is either object or class depending on whether the declaring entity was an object or class, and the third element is the name of the filter.

self method
  これは現在の手段の名前を返す(それぞれ建設譜と解体譜を指し示す文字列 <constructor> と <destructor> を伴う)｡ This returns the name of the current method (with the strings <constructor> and <destructor> indicating constructors and destructors respectively).

self namespace
  手段が起動される対象の唯一の名前空間の名前を返す｡ This returns the name of the unique namespace of the object that the method was invoked upon.

self next
  呼出し連鎖の末尾ではない手段(即ち､そこでは next 命令が実際の手段実装を起動することになる)から起動された場合､この副命令は呼出し連鎖の手段の次の要素を記述する､二つの要素のリストを返す; 第１要素は呼出連鎖の次の部分を記述する､級又は対象の名前であり､第２要素は手段の名前である(それぞれ建設譜と解体譜を指し示す文字列 <constructor> と <destructor> を伴う)｡もしこれが呼出し連鎖の末尾から起動された場合､この副命令は空文字列を返す｡ When invoked from a method that is not at the end of a call chain (i.e. where the next command will invoke an actual method implementation), this subcommand returns a two element list describing the next element in the method call chain; the first element is the name of the class or object that declares the next part of the call chain, and the second element is the name of the method (with the strings <constructor> and <destructor> indicating constructors and destructors respectively). If invoked from a method that is at the end of a call chain, this subcommand returns the empty string.

self object
  そこで手段が起動される対象の名前を返す｡ This returns the name of the object that the method was invoked upon.

self target
  櫛実装の内部で起動された場合､この副命令は篩われる手段を記述する二つの要素のリストを返す｡第１要素は手段の宣言の名前になり､第二要素は手段の実際の名前になる｡ When invoked inside a filter implementation, this subcommand returns a two element list describing the method being filtered. The first element will be the name of the declarer of the method, and the second element will be the actual name of the method.

### 用例 EXAMPLES

この例は､現在の対象に関する情報を提供する self の基本的用法を示す: This example shows basic use of self to provide information about the current object:

    oo::class create c {
        method foo {} {
            puts "this is the [self] object"
        }
    }
    c create a
    c create b
    a foo                → prints "this is the ::a object"
    b foo                → prints "this is the ::b object"

これは呼出し連鎖手段が如何に見えるか､そして､如何にそれに沿って横断し索引を変化するかを例証する: This demonstrates what a method call chain looks like, and how traversing along it changes the index into it:

    oo::class create c {
        method x {} {
            puts "Cls: [self call]"
        }
    }
    c create a
    oo::objdefine a {
        method x {} {
            puts "Obj: [self call]"
            next
            puts "Obj: [self call]"
        }
    }
    a x     → Obj: {{method x object method} {method x ::c method}} 0
            → Cls: {{method x object method} {method x ::c method}} 1
            → Obj: {{method x object method} {method x ::c method}} 0

### SEE ALSO

info, next

### KEYWORDS

call, introspection, object
Copyright © 2007 Donal K. Fellows