在 TCL 中需要有关 return -<options> 的信息

Need info about return -<options> in TCL

TCL return 命令中有哪些可用选项?我可以看到 -code -errorcode -errorinfo 作为 return 命令的选项。但无法理解它们之间的区别。

proc new {} {
set name george
puts "Hello $name"
return -code ok
}
puts [new]

这里我没有得到任何输出,就像正常的 return 命令一样。但是可以在 return 命令中为 -code 获得更多选项,例如 break 、 continue 、 error 和 retun ……这些选项有什么用。 还有下面的代码让我感到困惑..

proc new {} {
set name george
puts "Hello $name"
return -code return -code return -code return
}

这样我们可以给更多,它没有出错,这个选项有什么用..

return 的选项列在手册页上:return

-errorcode-errorinfo-errorstack-level 用于描述异常的各个方面:-options 允许传递字典命令的异常数据。在您彻底了解该语言并编写高级异常处理代码之前,这些都不太可能对您有用。

-code 选项用于指定周围代码需要执行何种处理。 ok表示无需特殊处理,命令结果为有效数据; error 意味着 catchtry 处理程序需要就位,否则程序将结束,而且命令的结果是一条错误消息。 breakcontinue 需要一个封闭的循环命令(或 catch / try 带有适当处理程序子句的命令)。 return 使使用它的命令表现得像 return 命令。除非您正在编写自己的控制结构,否则您可能不需要处理此选项。

-level 选项还允许 return 命令 return 到调用者以外的其他地方(但仍在调用堆栈中)。如果该值为 0,则 return 操作为 "in place":return 将 return 从自身开始,而不会终止它所属的脚本。第一行

set foo [return -level 0 bar]
puts {I'm still alive}

将作为 set foo bar 执行,评估将继续执行 puts 命令。 -level 1 对调用者意味着 return(通常的行为),-level 2 对调用者的调用者意味着 return,依此类推。

return 命令几乎接受其参数列表中的任何内容,并且像许多命令一样不会抱怨参数被重复。 return -code return -code return -code returnreturn -code return 做同样的事情。