4

私はtclを初めて使用しますが、次のようなprocを作成する必要があります。

proc TestVerb { Data Data_txt } {
VERBATIM [format "// Data: $Data - $Data_txt"]
if { $argc == 2} {
    VERBATIM {// SUCCESS //}
else {
    exit 1
}

私はこのようにprocを呼び出します:TestVerb Switch"This is used for..."

proc は別のファイルにあり、proc 呼び出しは別のファイルにあります。使用しない場合は目的の出力が得られるため、適切にソースされているように見えます$argcが、いずれ$argvかを使用するか$argc、次のコンパイルエラーが発生します:$argv/$argcそのような変数を読み取れません

この変数を参照する$::argc$::argv、結果が正しくありません。$argvは空で、$argc は 0 です

4

3 に答える 3

1

および変数はグローバル変数です (特別な意味がある場合) argcargvプロシージャ内では、次のように言わない限り、それらはまったく特別ではありません。

global argc argv

または、完全修飾バージョンを使用してください。

プロシージャでは、適切な数の引数を渡さない限り、(プロシージャ コール機構によって生成された) エラー メッセージが表示されます。自分でチェックする必要はありません (仮パラメータをデフォルトで使用するか、args仮パラメータの末尾に特殊な変数 (スペルに注意してください) を使用しない限り)。

プロシージャに渡された引数の正確なリストを取得するには、次を使用します。

set allArguments [info level 0]

通常は必要ありません。次のようにプロシージャを宣言するときは、絶対に必要ありません。

proc TestVerb { Data Data_txt } {
    ...
}
于 2015-01-28T15:20:28.350 に答える