我有一个奇怪的Tcl案例,也许我只是不明白。 以下代码在顶层(不在任何过程内)完成:
if {![info exists g_log_file_name]} {
set g_log_file_name "default.txt"
}
我希望它能做的是声明一个具有某些值的全局变量(如果它尚未声明)(可以在其他脚本或C应用程序中完成)。但是,if语句总是为false。我跑了Tcl 7.4。
可能是什么问题?
非常感谢你。
答案 0 :(得分:6)
% info level
0
% info exists g_log_file_name
0
% set g_log_file_name whatever
whatever
% info exists g_log_file_name
1
因此,您观察到的原因可能是因为在执行if
命令时变量确实始终未设置。
我可以想象的可能原因是:
我不确定你手头有长久遗忘的Tcl版本,但是8.x有trace
命令可以用来记录对特定变量的访问 - 你可以尝试使用它看看会发生什么。