【问题标题】:Getting keys of array in Tcl C code在 Tcl C 代码中获取数组的键
【发布时间】:2013-06-07 15:47:06
【问题描述】:

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

【问题讨论】:

    标签: c arrays tcl


    【解决方案1】:

    没有方便的 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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多