在 tcl 中访问 proc 内的变量名称

问题描述 投票:0回答:1

我正在尝试创建一个列出数组所有元素的过程:

流程如下:

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

当我用这个参数调用过程时:

array_values CMN_CLK_DIG_PATH

我得到输出:

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

相反,我希望输出为:

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/

知道该怎么做吗?

arrays tcl proc upvar
1个回答
0
投票

变量 array_input 在您的过程中仍然有效。其值为字符串“CMN_CLK_DIG_PATH”。所以只需将 arr 替换为 $array_input :

foreach name [lsort [数组名称 arr]] {puts "$array_input\($name\) : $arr($name)"}

© www.soinside.com 2019 - 2024. All rights reserved.