我必須爲TCL中的兩個變量設置相同的值。如何設置?現在我正在使用下面的命令來設置?請爲我提供一個替代解決方案。如何將相同的值設置爲tcl中的多個變量
set Server 192.168.0.1
set srvipaddr 192.168.0.1
單詞「服務器」將顯示在GUI.If我們進入它在配置文件中設置服務器和srvipaddr(函數中使用的變量名)相同的值服務器領域的一個IP地址。
我必須爲TCL中的兩個變量設置相同的值。如何設置?現在我正在使用下面的命令來設置?請爲我提供一個替代解決方案。如何將相同的值設置爲tcl中的多個變量
set Server 192.168.0.1
set srvipaddr 192.168.0.1
單詞「服務器」將顯示在GUI.If我們進入它在配置文件中設置服務器和srvipaddr(函數中使用的變量名)相同的值服務器領域的一個IP地址。
我不確定以下是您正在查看的內容嗎?
set Server 192.168.0.1
set srvipaddr $Server
的set
命令返回它的價值,所以你可以寫
set Server [set srvipaddr 192.168.0.1]
但是變得不易閱讀。
如果你有許多變量設置爲相同的值,你可以使用一個循環,並在列表中使用的變量名,例如:
% set variables [list one two three]
% foreach n $variables {
set $n 1
}
% puts $one
1
% puts $two
1
% puts $three
1
set Server 192.168.0.1
upvar 0 Server srvipaddr
一個變量,兩個人的名字。
這種技術的優點是保持了值的同步。 –
有幾種方法可以做到這
的一個襯裏:
的set
結果是被設定的值,從而可以用作值另一個set
命令:
set Server [set srvipaddr 192.168.0.1]
使用變量作爲值
您還可以設置第一個變量,然後用它來定義第二個變量:
set Server 192.168.0.1
set srvipaddr $Server
使用循環
因爲「一切是一個字符串」在TCL - 包括變量名稱 - 您可以遍歷變量名的列表:
foreach var {Server srvipaddr} {
set $var 192.168.0.1
}
變量別名
有一種先進的技術可以讓你有兩個名字指向同一個變量。這個命令是upvar,其作用如下:
set Server 192.168.0.1
upvar 0 Server srvipaddr
當你做到上面,都指向同一個內存位置,因此,如果你改變一個也改變對方。這是使用upvar的一種不尋常的方式;它通常是實現「按名稱調用」語義的一種方式。
嗨布萊恩奧克利,上述所有命令運作良好。感謝您的支持。 – gmanikandan
謝謝glenn jackman。 – gmanikandan