2017-09-05 17 views
0

私のスクリプトでlsetコマンドでこの問題が発生しました。 Wheter私はリスト内の特定の値を置き換えるコマンドを発行すると、リストのすべての要素を表示することになります。lsetが正しく動作しない

lset gamma_aa [expr int($index)] 0 

リストの$ indexの値を0に変更する代わりに、コマンドウィンドウにリスト全体が表示されます。 リストは、私が何かを見逃していました

set gamma_aa [lrepeat [expr int($nbrx*$nbry)] 0.] 

lrepeat使用して単一のリストを作成しましたか?

+2

方法LSET作品です。 1つの要素を変更し、全体(更新された)リスト値を返します。 –

+0

ああ、情報ありがとう! – John

答えて

0

setが変数の新しい内容を返すのと同じように、lsetコマンドはリストの新しい内容を返します。あなたは(通常)その戻り値を無視することができます。

特定のインデックスでの値の実際の設定が行われているはずです。あなたがそれを設定した値が以前にそのインデックスで保持されていた値と特に異なっていないか、またはインデックスされた位置がリストの最初から遠くにあるかどうかを確認するのは難しいかもしれません。


また、あなたが本当に行う必要はありません。

lset gamma_aa [expr int($index)] 0 

これは、すべての正気のケースでも同様に動作するはずです:

lset gamma_aa $index 0