【发布时间】:2016-06-20 14:44:07
【问题描述】:
我有一个命名空间变量,定义如下:
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 是一个过程。对上面的代码稍加解释一下,也可能会让事情变得清晰。
如果我错过了在问题中发布的任何内容,请指出我,我将编辑我的问题。 提前致谢。
【问题讨论】:
标签: tcl