"return“可以打印变量吗?
为了说明"uplevel“在Tcl8.6中的用法,我详细阐述了以下脚本,以帮助我理解"uplevel”的用法。
set a goodbye
proc test {} {
set a hello
uplevel #0 {return $a}
}
test这个例子基于我在wiki.tcl.tk上找到的这个脚本:
set x goodbye
apply {{} {
set x hello
uplevel {return $x}
}}但是当我执行它们时,它们都不会打印$x。
谢谢
发布于 2016-09-16 22:52:53
return命令将返回值。它将打印任务留给puts或调用者。或者,您可以在过程的执行过程中使用leave跟踪来完成此操作:
proc test {args} {
return "abc"
}
trace add execution test leave {apply {{cmd code result op} {
puts "the result was '$result'"
}}}
test 123
#>>> the result was 'abc'
#abc另外,不要使用uplevel return。结果会让你感到困惑。
https://stackoverflow.com/questions/39524089
复制相似问题