0

こんにちは、tcl アレイに関するヘルプが必要です。以下のような tcl に 2 つの手順があります。

    proc A {} {
      set lst_A [list];
      if {true} {
        lappend lst_A [::B $file1];
      } else {
        foreach id $allId {
          lappend lst_A [::B $id];
        }
      }
      return $lst_A;
    }

    proc B {fileID} {
      set fileName [::getFileName $fileID];  # getFileName returns filename from fileid
      set tcName "[set ItemName]_[set ItemId]";
      array set tcArrayName {$fileName $tcSpec};
      return $tcArrayName;
    }

ここで、キーがある種のファイル ID であり、値がその ID に関連付けられた名前であるキーと値のペアになる配列を作成したいと考えています。条件が真の場合、事はproc Aにあります。1つのキーと値のペアのみで配列を作成し、その配列をlst_Aに追加します。この場合、1つのアイテム、つまり返される配列のみが含まれます。しかし、条件が false の場合は、いくつかの ID をループし、ID ごとに proc B を呼び出して配列を作成します。配列は、この場合は複数のキーと値のペアの配列を含む lst_A に追加されます。

そこで、tcl チュートリアルで配列について読んだ後、上記の 2 つの手順を書き、配列を作成しました。しかし、これが正しい方法なのか、最も最適化された方法なのかはわかりません。

私の最終的な目標は、lst_A を作成することです。条件が true の場合はキーと値のペアを 1 つだけ含む配列にするか、複数のキーと値のペアを含む配列にする必要があります。私はproc Bで配列を作成しているので、proc Bからキーと値のペアを配列として返し、その配列をリスト、つまりproc Aのlst_Aに追加することしか考えられませんでした.

助言がありますか???

4

1 に答える 1