呼び出し元の名前空間から変数にアクセスし、変数を読み込み、変更できるプロシージャが必要です。変数は_current_selection
となります。私はいくつかの異なる方法でupvar
を使ってそれをしようとしましたが、何も働いていませんでした。 (ちょうどupvar
機構をテストするために小さなテスト手順を書いた)。 PROCへTclでupvarを使用しているプロシージャに変数を渡すことができません
コール:
select_shape $this _current_selection
PROC:
コールPROCへ:私の第二の試みのために
proc select_shape {main_gui var_name} {
upvar $var_name curr_sel
puts " previously changed: $curr_sel"
set curr_sel [$curr_sel + 1]
}
ここに私の試みです
select_shape $this
PROC:すべての試みで
proc select_shape {main_gui} {
upvar _current_selection curr_sel
puts " previously changed: $curr_sel"
set curr_sel [$curr_sel + 1]
}
、それはコードで、この領域に達すると、それは私が間違って何をやっているcan't read "curr_sel": no such variable
を言いますか?
EDIT:関数の呼び出しがbind
コマンドから作られている
:私はそれは問題ではないと思っ開始時に
$this/zinc bind current <Button-1> [list select_shape $this _current_selection]
。しかし、おそらくそれはします。変数を動作させるupvarため
私は '$ this'変数を参照してください。 incrTclクラスを使用していますか?名前空間と同じではありません。 – GrAnd
@GrAnd、私は本当に知りません。 – SIMEL
@GrAnd:同意しました。 'upvar'自体の使用自体はOKです。何か他のことが起こっている。 _really_重要な詳細がありません。 –