Как составить список всех пространств имен, загруженных в экземпляр tclsh?
Ченц
Как составить список всех пространств имен, загруженных в экземпляр tclsh?
Ченц
Попробуйте запустить этот процесс из Wiki TCLer.
proc listns {{parentns ::}} {
set result [list]
foreach ns [namespace children $parentns] {
eval lappend result [listns $ns]
lappend result $ns
}
return $result
}
Когда я запускаю его, я получаю следующий вывод:
% listns
::platform ::activestate::teapot::link ::activestate::teapot ::activestate ::tcl
::clock ::tcl::info ::tcl::dict ::tcl::tm ::tcl::mathop ::tcl::unsupported ::tcl
::mathfunc ::tcl::chan ::tcl::string ::tcl
%
Итак, чтобы получить ВСЕ пространства имен, вам просто нужно сделать это:
set all_namespaces [concat [listns] "::"]
lappend result {*}[listns $ns] $ns
было бы улучшением (для этого требуется только широко распространенная версия 8.5).
- person Donal Fellows; 01.06.2012