С 8,5 года, да. Команда return
имеет параметр -level
, который используется для этого:
return -level 2 $someValue
Так, например:
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
производит этот вывод:
X - in
Y - in
Z - in
X - out
Обратите внимание, что выполнение этого уменьшает возможность повторного использования Z
, но это ваше дело.