的我有其被定义为以下一个命名空间变量:了解使用Tcl的命名空间变量
namespace eval ::SMB::{
variable SmbInfo
------
------
proc ::SMB::SmbCreate {name dutport} {
variable SmbInfo
global DutPorts DutPort_2 DutPorts_3 smb
------
------
if{"" != [info command SMB::$name]} {
return -code error "command name \"$name\" already exists"
}
set SmbInfo($name -DutPort) $dutport
我相信新的Tcl和试图了解上面一段代码。几个问题,请纠正我,如果我错了,在任何一点:
在命名空间在上面定义的变量SmbInfo是越来越由一个在过程SmbCreate声明覆盖。我无法弄清楚什么是该行的目标:
set SmbInfo($name -DutPort) $dutport
我可以看到“DutPorts”被定义为全球性,但我找不到“DutPort”。我还没有执行代码。它可能是一个错误?
是($ name - DutPort)为变量SmbInfo创建数组索引,$ dutport的值是否被设置为该特定数组变量?
我在文件中类似的代码结构如下图所示
set SmbInfo($name - SmbSetDmac) [BuildMac1 $SmbInfo($from_name-DutPort)]
凡BuildMac1是一个过程。上述代码的一点解释也可能使事情变得清晰。
如果我错过了要发布的问题,请指出我,我会编辑我的问题。 在此先感谢。
首先断言该命令不存在,然后立即调用它似乎有点奇怪吗? –