0

TCL の短期集中コースを受講していますが、TCL の配列で問題が発生しています。A と B という 2 つのクラスがあります。クラス BI には、ローカル配列を更新するメソッドがあります。配列の形式は次のようになります。

filterData(1) = 23904890234009
filterData(2) = 28974501002990
filterData(3) = 69398018930453 

...そしてそこで止まります。インデックスは3つだけ。クラス A では、B オブジェクトをインスタンス化し、それに対してメソッドを実行してローカル配列を更新します。クラス B 内のメソッドは次のようになります。

method addData {} {
    lappend filterData($type) $data
}

$type 変数は 1 ~ 3 の数字で、$data 変数は数字の文字列です。このメソッドを実行して配列の内容を出力すると、新しい配列のように、何も含まれません。奇妙なのは、クラス B に他のローカル変数 (リスト、文字列) があり、同じ操作を行って、それ自体をリセットしているように見えるこの配列とは異なり、永続的であることです。これをどのように誤って処理している可能性があるかについてのアイデアはありますか? さらに情報が必要な場合は、提供できます。

4

2 に答える 2

1

昨日やっと問題が解けました。問題は配列宣言にありました。私が持っていた前に:

array set filterData {}

...そして、コードの先頭にあるのはそれだけです。次に、次のように変更しました。

variable filterData
array set filterData {}

変数は、そのクラスに属するメソッドへの後続の呼び出しでインスタンス化したクラス オブジェクトに保存されていました。それは私の愚かな間違いでした。

于 2014-08-13T15:35:54.707 に答える