从8.5开始,是的.该return命令有一个-level选项,用于执行此操作:
return -level 2 $someValue
Run Code Online (Sandbox Code Playgroud)
因此,例如:
proc X {} {
puts "X - in"
Y
puts "X - out"
}
proc Y {} {
puts "Y - in"
Z
puts "Y - out"
}
proc Z {} {
puts "Z - in"
return -level 2 "some value"
puts "Z - out"
}
X
Run Code Online (Sandbox Code Playgroud)
产生这个输出:
X - in
Y - in
Z - in
X - out
Run Code Online (Sandbox Code Playgroud)
请注意,这样做会降低可重用性Z,但这是您的业务.