我有以下基本代码:
proc test {} {
set my_var2 3
foreach iter {1 2 3} {
set my_var1 4
set my_var2 5
puts "Inside: $my_var1 $my_var2\n"
}
puts "outside $my_var1, $my_var2\n" ;#WHY IT DOES NOT GIVE ERROR HERE!
}
test ;#calling the function
Run Code Online (Sandbox Code Playgroud)
该程序的输出是这样的:
Inside: 4 5
Inside: 4 5
Inside: 4 5
outside 4, 5
Run Code Online (Sandbox Code Playgroud)
现在我的困惑是因为my_var1只在foreach循环的局部范围内定义为什么它的值甚至可以在循环外使用?换句话说,什么决定了Tcl中变量的范围?非常感谢您的帮助!