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

时间:2015-06-14 09:17:57

标签: tcl

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

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

这里我没有得到任何输出,它就像正常的返回命令。但是可以在返回命令中为-code获得更多选项,如break,continue,error以及retun ...这个选项的用途是什么。 而且下面的代码让我感到困惑..

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

就像我们可以提供更多,它没有得到错误,这个选项的用途是什么..

1 个答案:

答案 0 :(得分:2)

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

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

-code选项用于指定代码需要执行的处理类型。 ok表示不需要特殊处理,并且命令的结果是有效数据; error表示需要catchtry处理程序或程序结束,并且命令的结果是错误消息。 breakcontinue需要一个封闭的循环命令(或带有适当处理程序子句的catch / try命令)。 return使得使用它的命令的行为类似于return命令。除非您编写自己的控制结构,否则您可能不需要处理此选项。

-level选项还允许return命令返回到调用者之外的其他位置(但仍在调用堆栈中)。如果值为0,则返回操作“就位”:return将自行返回,而不终止它所属的脚本。

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

将以set foo bar执行,评估将继续puts命令。 -level 1表示返回调用者(通常的行为),-level 2表示返回调用者的调用者,依此类推。

return命令接受其参数列表中的任何内容,并且许多命令都不会抱怨重复的参数。 return -code return -code return -code returnreturn -code return完全相同。