2013-08-06 30 views
1

我必須爲TCL中的兩個變量設置相同的值。如何設置?現在我正在使用下面的命令來設置?請爲我提供一個替代解決方案。如何將相同的值設置爲tcl中的多個變量

set Server 192.168.0.1 

set srvipaddr 192.168.0.1 

單詞「服務器」將顯示在GUI.If我們進入它在配置文件中設置服務器和srvipaddr(函數中使用的變量名)相同的值服務器領域的一個IP地址。

回答

1

我不確定以下是您正在查看的內容嗎?

set Server 192.168.0.1 
set srvipaddr $Server 
1

set命令返回它的價值,所以你可以寫

set Server [set srvipaddr 192.168.0.1] 

但是變得不易閱讀。

+0

謝謝glenn jackman。 – gmanikandan

1

如果你有許多變量設置爲相同的值,你可以使用一個循環,並在列表中使用的變量名,例如:

% set variables [list one two three] 
% foreach n $variables { 
     set $n 1 
    } 

% puts $one 
1 
% puts $two 
1 
% puts $three 
1 
1
set Server 192.168.0.1 
upvar 0 Server srvipaddr 

一個變量,兩個人的名字。

+0

這種技術的優點是保持了值的同步。 –

4

有幾種方法可以做到這

的一個襯裏:

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的一種不尋常的方式;它通常是實現「按名稱調用」語義的一種方式。

+0

嗨布萊恩奧克利,上述所有命令運作良好。感謝您的支持。 – gmanikandan

相關問題