我正在尝试访问和操作 C 中的 Tcl 关联数组。我知道 Tcl_GetVar2 读取值,但是如何访问数组的键?谢谢
问问题
333 次
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 回答