TCL proc返回值的約定是什麼? proc可以在正常的終止情況下返回一個值,這就是fiune。但是例外情況呢?如果proc不返回任何編程值,返回什麼值?它是'0','-1','/ dev/null','True','False'?TCL proc返回值的約定
感謝, 格特
TCL proc返回值的約定是什麼? proc可以在正常的終止情況下返回一個值,這就是fiune。但是例外情況呢?如果proc不返回任何編程值,返回什麼值?它是'0','-1','/ dev/null','True','False'?TCL proc返回值的約定
感謝, 格特
但對於異常?
如果您有錯誤,請使用error
來表示它。它會創建一個異常情況,並向外冒泡,並可能被catch
困住。在Tcl 8.6中,您也可以使用throw
和try
/trap
來執行此操作。
在某些情況下,執行return -code error
會更清楚,因爲這會導致過程產生錯誤,而不是檢測到問題的特定位置。
如果proc不返回任何編程值,返回什麼值?
通常的「無值」值是空字符串。如果你只是做return
,那就是實際價值。你知道的許多Tcl命令(例如,puts
,for
)將產生空字符串作爲其結果。如果你交互地使用Tcl,Tcl解釋器循環不會打印任何空結果。
對於很多事情TCL,慣例是多種多樣的,務實和寬容。鼓勵您使用例外(通過error
,throw
或return
,主要還有用於迭代控制的continue
和break
等),而不是返回指示出現問題的特殊值。
即使如此,返回的值,如該命令的結果的範圍之外
false
,off
,no
或零)通常用於命令無法返回有用值時。命令從來沒有返回有用的值,因爲只有他們的副作用被認爲是有用的(如unset
)幾乎總是返回空字符串。
(請注意,命令返回一個字符串具有外的範圍內,沒有價值,因爲所有可能的值是有效的字符串。)
有時它只是更有意義,使用特殊的返回值;其他時間提高錯誤更方便,如果可能讓沒有經驗的用戶感到困惑。使用不存在的密鑰進行字典訪問就是一個例子。如果Tcl的值爲null
,則dict get $foo not-a-key
可能會返回該值;相反,你會得到一個例外。
你可以看看https://www.tcl.tk/man/tcl8.6/TclCmd/return.htm#M5? – Dinesh