我正在尝试创建一个列出数组所有元素的过程:
流程如下:
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/
知道该怎么做吗?
变量 array_input 在您的过程中仍然有效。其值为字符串“CMN_CLK_DIG_PATH”。所以只需将 arr 替换为 $array_input :
foreach name [lsort [数组名称 arr]] {puts "$array_input\($name\) : $arr($name)"}