Proc

ReferenceTOPKeywords

コマンド名

proc - Tcl のプロシージャを作成します。

構文

proc name args body

解説

procコマンドはnameという名前の新しいTclのプロシージャを作成し、その名前で使われている全部既存のコマンドやプロシージャは置き換えられます。新しいコマンドが呼び出されるたびに body の内容がTclインタプリタによって実行されます。通常、name は修飾されていなく(いかなるサブネームスペース名を含んでいない)、新しいプロシージャは現在のネームスペースに作成されます。 nameが名前空間修飾子を含んでいる場合、プロシージャは指定されたネームスペースに作成されます。 argsはプロシージャの仮引数として指定されます。引数は1つのリスト(空も可能)でリストの要素が個々の引数を指定します。 各引数の指定子も、また1つか2つのフィールドを持つリストです。指定子は1つだけのフィールドであれば引数の名前を示します。 2つのフィールドがあれば1番目が引数名で、2番目は引数のディフォルトの値です。

nameが呼び出されるとき、プロシージャに各仮引数につき、1つのローカル変数が作成されます。その値は呼び出し側コマンドの対応する引数の値か引数のデフォルト値となります。デフォルト値を持つ引数はプロシージャの呼び出しで指定される必要はありません。しかし、 すべてのデフォルトを持たない仮引数に対し、十分な実引数が必要です。そして余分な実引数があってはいけません。 プロシージャに可変な数の引数を許可する特別なケースの場合が一つあります。最後の仮引数がargsという名前で、プロシージャの呼び出しはプロシージャが持っている仮引数より多くの実引数を含むことができます。この場合、argsに割り当てられるもの以降のすべての実引数は結合して1つ のリストになります(list コマンドが使われたかのように)。この結合された値はローカル変数argsに割り当てられます。

bodyが実行されている間は、変数名は通常はローカル変数を参照します。参照されたときに自動的に作成され、プロシージャが 終了するとき削除されます。プロシージャの各引数ごとに1つのローカル変数が自動的に作成されます。 globalコマンドかupvarコマンドを呼び出すことだけにより、グローバル変数はアクセスされることができます。  variableコマンドか upvarコマンドを呼び出すことだけにより、ネームスペース変数はアクセスされることができます。

procコマンドは空文字列を返します。プロシージャが呼び出されるとプロシージャの戻り値はreturnコマンドで指定された値となります。プロシージャが明示的に returnを実行しない場合、戻り値はプロシージャの本体で最後に実行されたコマンドの値になります。プロシージャの本体の実行中にエラーが発生する場合、全体のプロシージャが同じエラーを返します。

参照

info, unknown

キーワード

argument, procedure


Copyright © 1993 The Regents of the University of California. Copyright © 1994-1996 Sun Microsystems, Inc. Copyright © 1995-1997 Roger E. Critchlow Jr.