Tcl действительно не поддерживает процедуру перегрузки, которая имеет смысл, когда вы считаете, что у него действительно нет типов, как таковых. Все это строка, которая может, в зависимости от значения, интерпретироваться как другие типы (int, list и т. Д.).
Если вы можете описать, что именно вы пытаетесь выполнить (почему вы думаете, что вам нужно перегрузить), мы могли бы сделать рекомендацию о том, как это сделать.
Учитывая, что вы редактируете свой вопрос, есть несколько способов сделать это. GrAnd показал 2 из них. Третий, и один я фанат, чтобы использовать конкретную информацию о том, как называлась команда:
proc fun { File1 File2 {File3 ""}} { ;# file3 has a default
if {[llength [info level 0]] == 3} { ;# we were called with 2 arguments
;# (proc name is included in [info level 0])
# do what you need to do if called as [fun 1 2]
} else { ;# called with 3 arguments
# do what you need to do if called as [fun 1 2 3]
}
}
Я понимаю, что это просто псевдо-код, но этот стиль распорка не будет работать в Tcl , –