我已經得到了我想要爲默認值使用的參數變量的TCL PROC參數的默認值:如何使用一個變量作爲
proc log {message {output $::output}} {
....
}
有沒有辦法做到這一點還是需要我來評估我的過程中的變量?
我已經得到了我想要爲默認值使用的參數變量的TCL PROC參數的默認值:如何使用一個變量作爲
proc log {message {output $::output}} {
....
}
有沒有辦法做到這一點還是需要我來評估我的過程中的變量?
是的,但不能使用花括號({}
)作爲參數列表。您聲明程序例如這種方式:
proc log [list message [list output $::output]] {
....
}
但要注意:
該變量在當程序被聲明的時間來評價,而不是當它被執行!
如果你想要一個默認參數,這個參數只在你調用時定義的值,你必須更加棘手。最關鍵的是,你可以用info level 0
獲得的參數列表當前過程調用,然後你只檢查列表的長度:
proc log {message {output ""}} {
if {[llength [info level 0]] < 3} {
set output $::output
}
...
}
記住,檢查的參數列表時,第一個是命令本身的名稱。
另一種方式來做到這一點:
proc log {message {output ""}} {
if {$output eq ""} {
set output $::output
}
}
+1:這是完美的定義時的默認設置。 –