0

ActiveState の TclDevKit デバッガーを使用してコードを確認していますが、プログラムの実行中のある時点で次のエラーが発生します。

can't read "UserArray": variable is array
    while executing
"set UserArray"
    ("uplevel" body line 1)
    invoked from within
"DbgNub_uplevelCmd DbgNub_uplevelCmd $args"
    invoked from within
"uplevel 1 [list set $name]"
    (procedure "DbgNub_TraceVar" line 53)
    invoked from within
"DbgNub_TraceVar 1 array UserArray time1_satOTRS1,2 w"
    (write trace on "UserArray(time1_satOTRS1,2)")
    invoked from within
"set UserArray($item,$window) $profile_array($item)"

私は Tcl/Tk を理解しているので、私がしていることは完全に有効で合法であるため、このエラーは私を完全に困惑させます。コードは次のとおりです。

foreach item [array names profile_array] {
    set UserArray($item,$window) $profile_array($item)
}

Tcl では、配列内のインデックスからの読み取りと書き込みが許可されています。ここでエラーが発生することはないと思います...詳細が不足していますか?

4

1 に答える 1

0

コードの次の行:

uplevel 1 [list set $name]

あなたの場合は、$name == "UserArray". 上記のステートメントは、前のスタック フレームで次のように実行されます。

set UserLevel

これは配列と同様に意味がありませんUserLevel--それがエラーメッセージが伝えようとしているものです。私はあなたが本当に意味するのだろうか:

upvar 1 $name UserArray

から配列にアクセスするためproc

于 2014-06-18T20:38:28.637 に答える