Обычно я ожидал бы имя процедуры после последнего набора ::, но здесь оно пустое
Пустая строка является допустимым именем для процедуры в Tcl (как и дляпеременные).
% namespace eval ::tk::dialog::file::chooseDir {}
% proc ::tk::dialog::file::chooseDir:: {args} { return "called!" }
% ::tk::dialog::file::chooseDir::
called!
% namespace eval ::tk::dialog::file::chooseDir { "" }
called!
% info procs ::tk::dialog::file::chooseDir::*
::tk::dialog::file::chooseDir::
Я не знаю историю этих внутренних компонентов Tk, но процедура, названная с использованием пустой строки, может быть основной процедурой для пространства имен с таким же именем chooseDir
(как своего рода соглашение об именах), а не просто дублируя имя: proc ::tk::dialog::file::chooseDir::chooseDir {args} {;}
. Или это потому, что вся функция выбора каталога auto_load ed, для которой требуется имя proc (команда), а не имя пространства имен?
автоматически, сгенерируйте некоторую документацию.
Может быть, при сборке интерпретатора Tcl для частей документа взять содержащееся в нем имя пространства имен chooseDir
в качестве документированного названия такой процедуры?