You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TCL的proc中输出数组元素时显示原数组名称?

TCL数组遍历输出显示原数组名的解决方法

你的问题出在puts语句里硬编码了arr这个内部别名,没有使用传入的原始数组名参数。只需要将输出中的arr替换为参数$array_input即可实现期望效果。

修改后的proc代码:

proc array_values {array_input} {
  upvar $array_input arr
  foreach name [lsort [array names arr]] {puts "$array_input($name) : $arr($name)"}
}

调用array_values CMN_CLK_DIG_PATH后,输出将变为:

CMN_CLK_DIG_PATH(0) : u_sm/u_sm_n/u_sm_ph/u_chip/Icmn0/
CMN_CLK_DIG_PATH(1) : u_sm/u_sm_n/u_sm_ph/u_chip/Icmn1/

说明

upvar命令只是把外部数组映射到proc内部的arr别名,方便你在proc内操作数组元素。但你需要输出的是用户实际传入的数组名称,也就是array_input参数的取值,因此直接在输出字符串中使用$array_input就能显示原数组名。

内容的提问来源于stack exchange,提问作者J.S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 04:57:07