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]
}
}