Tcl代码中的旁路退出

Tcl代码中的旁路退出,tcl,exit,Tcl,Exit,让我们假设我有proc foo。程序代码为: proc foo { argy } { if { $argy == 1 } { exit 1 } } 我想调用foo,但让调用代码绕过/忽略exit命令,而不是退出TCL。即:此代码: foo 1 puts "bar" 应产生: >bar 有什么想法吗?谢谢。使用rename覆盖默认行为 rename exit _exit proc exit {{status ""}} {} 在代码中第一次出现exit命令之前,保留上述代码。i、

让我们假设我有proc foo。程序代码为:

proc foo { argy } {
   if { $argy == 1 } { exit 1 }
}
我想调用foo,但让调用代码绕过/忽略exit命令,而不是退出TCL。即:此代码:

foo 1
puts "bar"
应产生:

>bar

有什么想法吗?
谢谢。

使用
rename
覆盖默认行为

rename exit _exit
proc exit {{status ""}} {}

在代码中第一次出现exit命令之前,保留上述代码。i、 e.即使在代码开始时,也要使用此虚拟
退出过程替换
退出

使用
重命名
覆盖默认行为

rename exit _exit
proc exit {{status ""}} {}

在代码中第一次出现exit命令之前,保留上述代码。i、 e.即使在代码开始时,也要使用此虚拟
退出过程替换
退出

可能会使假
退出
do
返回
?@DonalFellows:因为OP只是想绕过
退出
,所以我做了空定义,从而使它毫无意义。如果需要,可能可以添加
return
。新的
exit
proc的主体将是
return-code return
,因此它的行为就像
return
命令。很抱歉,我没有回答这个问题,{status”“}做什么?我从未见过这样的代码样式……这是一个默认参数。Status是第一个参数带,emit th string是默认值。可能会使假
exit
do
return
?@DonalFellows:由于OP只是想绕过
exit
,所以我创建了空定义,从而使其毫无意义。如果需要,可能可以添加
return
。新的
exit
proc的主体将是
return-code return
,因此它的行为就像
return
命令。很抱歉,我没有回答这个问题,{status”“}做什么?我从未见过这样的代码样式……这是一个默认参数。状态是第一个参数带,并发出TH字符串是默认值。如果Dinesh的答案解决了你的问题,考虑接受答案,向其他读者表明它是有用的。如果Dinesh的答案解决了你的问题,考虑接受答案,向其他读者表明它是有用的。