对设置变量的 Tcl 过程的调用似乎打印了正在设置的值。
% proc a { } { set b "I don't want that!" }
% a
I don't want that!
Run Code Online (Sandbox Code Playgroud)
如何防止?
只需添加一个裸return:
% proc a { } { set b "I don't want that!" ; return }
Run Code Online (Sandbox Code Playgroud)
请注意,该值实际上并未由相关代码打印。该set命令返回的值,a命令返回其最后执行的命令的值。如果您a在交互式 tclsh* 会话中运行该命令,则在下一个提示之前打印返回值,但如果您a在脚本中以非交互式方式执行,则不会打印它。
*) 或类似的,如 tkcon。