Tcl进程返回的约定
Tcl proc返回值的约定是什么?在正常终止情况下,proc可以返回一个值,这很好。但是例外情况呢?如果proc没有返回任何编程值,那么返回什么好值?它是“0”、“1”、“0/dev/null”、“True”、“False”吗?与Tcl的许多东西一样,约定是多样的、实用的和允许的。我们鼓励您使用异常(通过Tcl进程返回的约定,tcl,Tcl,Tcl proc返回值的约定是什么?在正常终止情况下,proc可以返回一个值,这很好。但是例外情况呢?如果proc没有返回任何编程值,那么返回什么好值?它是“0”、“1”、“0/dev/null”、“True”、“False”吗?与Tcl的许多东西一样,约定是多样的、实用的和允许的。我们鼓励您使用异常(通过error、throw或return,主要是continue和break进行迭代控制等),而不是返回指示出错的特殊值 即使如此,返回的值仍然是 命令结果范围之外的值(如范围为整数时为-1)≥
error
、throw
或return
,主要是continue
和break
进行迭代控制等),而不是返回指示出错的特殊值
即使如此,返回的值仍然是
- 命令结果范围之外的值(如范围为整数时为-1)≥0)
- 空字符串
- 布尔错误(
,false
,关闭
,或零)否
unset
),几乎总是返回空字符串
(请注意,返回字符串的命令没有超出范围的值,因为所有可能的值都是有效字符串。)
有时使用特殊的返回值更有意义;其他时候,如果对没有经验的用户来说可能有点困惑,那么引发错误会更方便。例如,使用不存在的密钥访问字典。如果Tcl有一个null
值,dict get$foo not-a-key
可能会返回该值;相反,你会得到一个例外
文件:
但是例外情况呢
如果您有错误,请使用error
指示错误。它创建了一个异常条件,该异常条件向外冒泡,可通过catch
捕获。在TCL8.6中,您还可以使用throw
和try
/trap
来执行此操作
在某些情况下,执行return-code error
更为清晰,因为这会使过程产生错误,而不是在其中检测到问题的特定位置
如果proc没有返回任何编程值,那么返回什么好值
通常的“无值”值是空字符串。如果您只是执行返回
,那么实际值就是这个值。您知道的许多Tcl命令(例如,put
,for
)将生成空字符串作为其结果。如果您以交互方式使用Tcl,则Tcl解释器循环不会打印任何空结果。您可以看看?