のは、グローバル配列の存在を確認するためのコマンドを作成してみましょう。 :uplevel #0
の部分は、スクリプトがグローバルレベルで実行されることを意味します。
は、今、私たちは、配列を作成し、それを確認してください。
% array set a\ b {key1 val1}
% checkArr "a b"
1
それが存在しています。私たちは同じコード使用して、配列のメンバーの存在を確認するもできます。実際には
% checkArr "a b(key1)"
1
を、文字列のいずれかの種類がcheckArr
に渡すことができ、変数がある場合、それはあなたを教えてくれます(配列やそれ以外)その名前で。あなたは、アレイのメンバーのための専門チェッカーをしたい場合は、次のように書くことができます。
proc checkArrayMember {arrName memberName} {
uplevel #0 [list info exists $arrName\($memberName)]
}
% checkArrayMember "a b" key1
1
左括弧の前にバックスラッシュは文字列の一部だけその構文上の意味を奪い、それを作る:基本的にスクリプトをinfo exists {a b(key1)}
になります。
ドキュメント: array、 info、 list、 proc、 uplevel、 Summary of Tcl language syntax
あなたが提供されたサンプルは、あなたが述べている問題以外にも多くの問題があります。再現可能なコードスニペットを入力してください。 – Jerry
@Jerryにお問い合わせいただきありがとうございます。配列名が変数でスペースがある場合、情報が存在するだけで助けが必要です。親切にお手伝いします – Stuti
重複:https://stackoverflow.com/questions/44605149/tcl-how-to-name-a-variable-that-includes-another-variable?rq=1 et。 al。 –