在下面的代码部分中将SBPort声明为upvar时,为什么下划线是前缀? 在这个函数里面如果我想打印数组怎么办?因为如果我尝试使用“puts”进行打印,则会将$ _SBPort($ DutPort)视为评论。
proc GetCapturedFrames { DutPorts SBPort} {
upvar $SBPort _SBPort
foreach DutPort $DutPorts {
set card [lindex $_SBPort($DutPort) 1]
set port [lindex $_SBPort($DutPort) 2]
答案 0 :(得分:2)
下划线只是变量名中允许的另一个字符。我假设程序员希望局部变量的名称与链接到的变量的名称类似,但实际上名称不同。
您发布的代码中没有任何内容表明puts $_SBPort($DutPort)
被视为评论的原因,实际上它应该打印出有问题的值。请注意(假设代码不是非常错误)_SBPort
是一个数组(形式为_SBPort(<member name>)
的变量名的集合),而$_SBPort($DutPort)
似乎是一个列表(序列)价值观。)