2015-11-18 40 views
0

讓我們假設我有proc foo。我們把proc代碼:在Tcl中的代碼旁路退出

proc foo { argy } { 
    if { $argy == 1 } { exit 1 } 
} 

我想調用foo,但有調用代碼旁路/忽略exit命令,而不是退出TCL。即:此代碼:

foo 1 
puts "bar" 

應該產生:

>bar 

任何想法?
謝謝。

+0

如果Dinesh的答案解決了您的問題,請考慮接受答案以向其他讀者指出它很有用。 –

回答

4

使用rename覆蓋默認行爲。

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

在代碼中第一次出現exit命令之前,請保留上面的代碼。即使在您的代碼開始時,也會將exit替換爲此虛擬exit過程。

+2

也許讓假的'exit'做'return'? –

+0

@DonalFellows:由於OP只是想繞過'exit',所以我做了空的定義,從而使它沒有任何意義。也許,如果需要,可以添加「返回」。 – Dinesh

+1

新'exit' proc的主體將是'return-code return',因此它的行爲就像是一個'return'命令 –