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