syntax: uplevel level command
uplevel和eval的功用是一样的,只不过uplevel可以把command 执行到其他层去,而eval只能在当前层执行command
set x 10
proc cc {} {
set x 1
uplevel {set x [expr $x+1]}
}
puts "x = [cc]"
=>结果是:x=11,即set x [expr $x+1]被放到调用层执行,改变了调用层的x值。
====================================
set x 10
proc cc {} {
set x 1
uplevel "set x [expr $x+1]"
}
puts "x = [cc]"
结果是:x=2,即set x [expr $x+1]在当前层执行,改变了当前层的x值。
====================================
set x 10
proc cc {} {
set x 1
uplevel "set x [expr $x+1]"
puts "local x=$x"
}
puts "x = [cc]"
=>结果是:
local x=1
x =
暂时不知为什么[cc]的结果是空?