Tcl は、プロシージャーに関して非常に優れたイントロスペクションを持っています。これにより、プロシージャを書き直して、さらにコードを追加できます。
# Assume there are no defaults; defaults make this more complicated...
proc N [info args N] [concat {
# Use 'ne' for string comparison, '!=' for numeric comparison
if {$arg1 ne "GOOD VALUE"} {
error "arg1 is bad"
# The semicolon is _important_ because of the odd semantics of [concat]
};
} [info body N]]
OK、それが唯一の方法ではありません.Ericの答えは、私が通常コマンドをラップする方法に近く、非手順コマンドでも機能するという利点があります.しかし、このソリューションにはコードをバインドするという利点があります.後で間違いがほとんどないように、きちんとタイトに。また、エラー トレースに余分なスタック フレームが導入されないため、デバッグをシンプルに保つことができます。