的我有其被定義爲以下一個命名空間變量:瞭解使用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是一個過程。上述代碼的一點解釋也可能使事情變得清晰。
如果我錯過了要發佈的問題,請指出我,我會編輯我的問題。 在此先感謝。
首先斷言該命令不存在,然後立即調用它似乎有點奇怪嗎? –