如何在tcl中为多个变量设置相同的值
我必须为TCL中的两个变量设置相同的值。如何设置??现在我使用下面的命令来设置?请给我一个替代方案如何在tcl中为多个变量设置相同的值,tcl,Tcl,我必须为TCL中的两个变量设置相同的值。如何设置??现在我使用下面的命令来设置?请给我一个替代方案 set Server 192.168.0.1 set srvipaddr 192.168.0.1 “服务器”一词将显示在GUI中。如果我们在服务器字段中输入ip地址,则必须在服务器和配置文件中的srvipaddr(函数中使用的变量名)中设置相同的值。我不确定以下内容是否是您所看到的 set Server 192.168.0.1 set srvipaddr $Server 我不确定以下是不是
set Server 192.168.0.1
set srvipaddr 192.168.0.1
“服务器”一词将显示在GUI中。如果我们在服务器字段中输入ip地址,则必须在服务器和配置文件中的srvipaddr(函数中使用的变量名)中设置相同的值。我不确定以下内容是否是您所看到的
set Server 192.168.0.1
set srvipaddr $Server
我不确定以下是不是你正在看的
set Server 192.168.0.1
set srvipaddr $Server
set
命令返回其值,因此您可以编写
set Server [set srvipaddr 192.168.0.1]
但是它的可读性变差了。使用
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 variables [list one two three]
% foreach n $variables {
set $n 1
}
% puts $one
1
% puts $two
1
% puts $three
1
一个变量,两个名称
一个变量,两个名称。有几种方法可以做到这一点 一行:
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
}
变量别名
有一种高级技术可以让两个名称指向同一个变量。此命令是,其工作方式如下:
set Server 192.168.0.1
upvar 0 Server srvipaddr
当您执行上述操作时,两者都指向相同的内存位置,因此,如果您更改其中一个,那么您也会更改另一个。这是使用upvar的一种有点不寻常的方式;这通常是实现“按名称调用”语义的一种方法 有几种方法可以做到这一点 一行:
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
}
变量别名
有一种高级技术可以让两个名称指向同一个变量。此命令是,其工作方式如下:
set Server 192.168.0.1
upvar 0 Server srvipaddr
当您执行上述操作时,两者都指向相同的内存位置,因此,如果您更改其中一个,那么您也会更改另一个。这是使用upvar的一种有点不寻常的方式;这通常是实现“按名称调用”语义的一种方法 这种技术的优点是保持值同步。这种技术的优点是保持值同步。嗨,Bryan Oakley,以上所有命令都工作得很好。感谢您的支持。嗨,布莱恩·奥克利,以上所有命令都运行良好。谢谢你的支持。