2016-12-10 12 views
0

以下のコードセクションのSBPortをupvarとして宣言している間に、アンダースコアの先頭にはなぜですか? この機能の中で、アレイを印刷したい場合はどうすればいいですか? "puts"で印刷しようとすると、$ _SBPort($ DutPort)をコメントとして考慮しているためです。Upvar宣言のアンダースコア

proc GetCapturedFrames { DutPorts SBPort} { 
    upvar $SBPort _SBPort 

    foreach DutPort $DutPorts { 
    set card [lindex $_SBPort($DutPort) 1] 
    set port [lindex $_SBPort($DutPort) 2] 

答えて

2

アンダースコアは、変数名に使用できる別の文字です。私は、プログラマーが、ローカル変数が、リンクされている変数の名前に似ていて、実際は同じ名前ではない名前を持つことを望んでいたと推測します。

puts $_SBPort($DutPort)がコメントとみなされる理由を示すコードには何も掲載されていません。本当に問題の値を印刷する必要があります。 _SBPortは配列(_SBPort(<member name>)という形式の変数名の集合)であり、$_SBPort($DutPort)はリスト(値のシーケンス)であると思われることに注意してください。