Tcl Upvar声明中的下划线
在下面的代码部分中,将SBPort声明为upvar时,为什么要加下划线作为前缀? 在这个函数中,如果我想打印数组,我该怎么做?因为如果我尝试打印“puts”,它会考虑将$SBPort($DutPort)作为注释Tcl Upvar声明中的下划线,tcl,Tcl,在下面的代码部分中,将SBPort声明为upvar时,为什么要加下划线作为前缀? 在这个函数中,如果我想打印数组,我该怎么做?因为如果我尝试打印“puts”,它会考虑将$SBPort($DutPort)作为注释 proc GetCapturedFrames { DutPorts SBPort} { upvar $SBPort _SBPort foreach DutPort $DutPorts { set card [lindex $_SBPort($DutPort) 1]
proc GetCapturedFrames { DutPorts SBPort} {
upvar $SBPort _SBPort
foreach DutPort $DutPorts {
set card [lindex $_SBPort($DutPort) 1]
set port [lindex $_SBPort($DutPort) 2]
下划线只是变量名中允许的另一个字符。我假定程序员希望局部变量的名称与所链接的变量的名称相似,但实际上不是相同的名称
您发布的代码中没有任何内容表明为什么
put$\u SBPort($DutPort)
会被视为注释,实际上它应该打印有问题的值。请注意(假设代码没有大错特错)\u SBPort
是一个数组(形式为\u SBPort()
的变量名集合),而$\u SBPort($DutPort)
似乎是一个列表(一系列值)。下划线只是变量名中允许的另一个字符。我假定程序员希望局部变量的名称与所链接的变量的名称相似,但实际上不是相同的名称
您发布的代码中没有任何内容表明为什么put$\u SBPort($DutPort)
会被视为注释,实际上它应该打印有问题的值。请注意(假设代码没有大错特错)\u SBPort
是一个数组(形式为\u SBPort()
的变量名集合),而$\u SBPort($DutPort)
似乎是一个列表(一系列值)