0

C で Tcl 連想配列にアクセスして操作しようとしています。Tcl_GetVar2 が値を読み取ることはわかっていますが、配列のキーにアクセスするにはどうすればよいですか? ありがとう

4

1 に答える 1

0

連想配列のキーを一覧表示するための便利な C API はありません (これは、Tcl の内部インターフェイスを使用していたとしても実際には当てはまります。問題は、配列に実際にあるものの性質が非常に重要であるということです)。最も簡単な方法は、Tcl_Evalまたは関連する関数の 1 つを使用して呼び出すことarray namesです。この C 関数のようなものでうまくまとめられます (ただし、結果の有効期間などを管理するには注意が必要です)。

Tcl_Obj *GetArrayKeys(
    Tcl_Interp *interp,
    const char *arrayName) {
  Tcl_Obj *script = Tcl_NewStringObj("array names", -1);
  int result;

  Tcl_ListObjAppendElement(NULL, script, Tcl_NewStringObj(arrayName, -1));
  Tcl_IncrRefCount(script);
  result = Tcl_EvalObjEx(interp, script, TCL_EVAL_DIRECT);
  Tcl_DecrRefCount(script);
  if (result != TCL_OK)
    return NULL;
  return Tcl_GetObjResult(interp);
}
于 2013-06-08T11:24:37.083 に答える