我对以下过程有疑问:
proc setDefault {{nampspaceList "ALL"}} {
if {$nampspaceList == "ALL"} {
set nampspaceList "namespace1 namespace2 namespace3"
}
foreach ns $nampspaceList {
append ns "::setDefault"
$ns
}
}
附加的ns是“:: setDefaultnamespace1namespacenamename3”,但是在foreach循环中& ns的含义是什么,每次附加一个命名空间,它会打印出一次结果?
答案 0 :(得分:3)
程序中的foreach
循环循环遍历变量nampspaceList
中的列表,对于列表中的每个项目,它通过向::setDefault
附加$ns
来创建命令。
然后,行{{1}}会尝试执行该命令。
答案 1 :(得分:1)
嗯,不,运行foreach循环后ns的最终值是“[lindex $ nampspaceList end] :: setDefault”,因为在每次迭代中,ns都是用列表$ nampspaceList中的每个项设置的。
您可以通过在代码中间添加一些放置来检查。
例如用setDefault {ns1 ns2 ns3}
调用它
将ns设置为ns1::setDefault
(在“:: setDefault”附加之后),ns2::setDefault
和ns3::setDefault
。