我在使用 Tcl 时遇到一些问题。我有一个变量,里面有一个字符串。但现在我希望这个字符串成为下一个变量的名称。
我在网上发现了一些类似的问题,但这些都是关于将一个变量的值放入另一个变量中。不使用它作为变量的名称。
这是一个示例代码来帮助解释:
foreach key [array names ::openedFiles] {
puts $::openedFiles($key)
set filename [file tail $::openedFiles($key)]
set parts [split $filename .]
set name [lindex $parts 0]
puts $name
$L1 create cell $name
set "value of $name" [ layout create $::openedFiles($key) -dt_expand -log LUN.log]
所以基本上它必须执行以下操作。该数组中有一些路径字符串。我只从路径中获取文件名,而没有文件扩展名。
然后我想创建一个变量“cell”,它是“$name”的值。因此,当文件名是“Test”时,$name的值将是“Test”,我想像这样执行最后一行
set Test [ layout create $::openedFiles($key) -dt_expand -log LUN.log]
这样 $name 的值将是新变量的名称。因此我可以创建一个变量,其中包含数组中所有值的名称。
任何帮助或指示都会很棒!
非常感谢!
正确的解决方案是使用$name
作为要设置的第一个参数
set name "foo"
set $name "bar"
puts $foo ;# -> bar
但如果你尝试使用$name
它会产生foo
, not bar
(这就是您根据注释在代码中所做的事情。我不知道为什么您需要一个您不知道名称的变量,但无论如何:
puts [set $name] ;# -> bar
会给你正确的东西。对于对象也是如此:
set topcell [[set $name] topcell]
所以我必须问你:那么你想用动态命名变量做什么呢?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)