【发布时间】:2013-06-07 15:47:06
【问题描述】:
我正在尝试访问和操作 C 中的 Tcl 关联数组。我知道 Tcl_GetVar2 读取值,但是如何访问数组的键? 谢谢
【问题讨论】:
我正在尝试访问和操作 C 中的 Tcl 关联数组。我知道 Tcl_GetVar2 读取值,但是如何访问数组的键? 谢谢
【问题讨论】:
没有方便的 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);
}
【讨论】: