次のように使用できる関数を書きたいと思います。
my_function {
cmdA argA_1 argA_2
cmdB argB_1 argB_2
cmdC argC_1 argC_2
}
おそらくループで、を使用して my_function を実装したいと思いnamespace eval ::my_internal_namespace [uplevel ...]
ます。これはすぐにはあまり役に立ちませんが、後で機能を拡張して、単にuplevel
.
my_internal_namespace
次のように定義されます。
namespace eval my_internal_namespace {
proc cmdA { args } {
puts "$args"
}
proc cmdB { args } {
puts "$args"
}
proc cmdC { args } {
puts "$args"
}
}
この手法により、最終的に my_function の呼び出し元は、my_function から必要ないくつかの事実と動作を宣言できるようになると思います。これらの事実と動作のパラメーターは、呼び出し元のコンテキストで評価されます。たとえば、変数の値を取得します。または、呼び出し元の名前空間とスコープで他の置換を実行します。