1

私はこのようなスクリプトを持っています:

proc subProc1 { } {
    puts $var1
}
proc subProc2 { } {
    puts $var2
}

proc mainProc { args } {
    # Define many variables
    subProc1
    subProc2
    #etc.
}

subProc1 と subProc2 に、mainProc で定義された変数を持たせたいと考えています。それらを引数として渡すことはできますが、それは多くの引数であるため、避けたいと思います。

この行を subProcs に追加して、upvar コマンドを使用しようとしました。

subProc1 { } {
    upvar $var1 var1 $var2 var2 ;#etc
    puts $var1
    # etc.
}

しかし、「そのような変数はありません」というエラーメッセージが表示され、このような巨大な行があるのは良くありません

名前空間について読んだばかりですが、これを使用する方法がよくわかりません (さらに、概念を理解していないので、私のユースケースに本当に適応していますか?)

4

1 に答える 1

1

upvarそのための適切なツールです。他のコマンドは でエミュレートできますupvar

しかし、あなたは の呼び方を間違えていますupvar。値ではなく変数を使用する必要があります(「そのような変数はありません」というエラーがスローされます)。

upvar var1 var1 var2 var2 ;#...

データを格納する別の方法、おそらく辞書または配列を使用することを考えますか?
これにより、変数を簡単に渡すことができます。

于 2013-12-31T02:26:47.480 に答える