0

我正在尝试访问和操作 C 中的 Tcl 关联数组。我知道 Tcl_GetVar2 读取值,但是如何访问数组的键?谢谢

4

1 回答 1

0

没有方便的 C API 来列出关联数组的键(即使您使用的是 Tcl 的内部接口,这实际上也是如此;问题是数组中真正存在的内容的性质非常重要)。最简单的方法是使用Tcl_Eval或其相关函数之一来调用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 回答