Если вам нужен аргумент по умолчанию, который определяется только в значении во время вызова, вам нужно быть более хитрым.Ключ в том, что вы можете использовать info level 0
, чтобы получить список аргументов для текущего вызова процедуры, а затем просто проверить длину этого списка:
proc log {message {output ""}} {
if {[llength [info level 0]] < 3} {
set output $::output
}
...
}
Помните, что при проверке списка аргументовпервое - это имя самой команды.