我正在尝试编写一小段代码来列出 info globals 命令中包含的所有变量及其值。我已经尝试了几次替换迭代,但无法让 Tcl 将变量名视为变量,并返回其值。以下是我开始的内容:
set fileid [open "c:/tcl variables.txt" w+]
foreach {x} [lsort [info globals]] {
set y $x
puts $fileid "$x $y "
}
Run Code Online (Sandbox Code Playgroud)
我可以得到
DEG2RAD DEG2RAD PI PI RAD2DEG RAD2DEG .....
或者
DEG2RAD $DEG2RAD 价格$PI RAD2DEG $RAD2DEG .....
但我需要的是
DEG2RAD 0.017453292519943295 PI 3.1415926535897931 RAD2DEG 57.295779513082323 ....
小智 6
我认为您正在寻找 subst 命令:
set fileid [open "c:/tcl variables.txt" w+]
foreach {x} [lsort [info globals]] {
puts $fileid "$x [subst $$x] "
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以利用 set 返回正在设置的值这一事实:
set fileid [open "c:/tcl variables.txt" w+]
foreach {x} [lsort [info globals]] {
puts $fileid "$x [set $x] "
}
Run Code Online (Sandbox Code Playgroud)