在 Tcl 中查找命名空间的所有过程

use*_*991 0 namespaces introspection tcl proc

让我们说我有一个命名空间。我想找到所有的命名空间过程。例如,假设我有以下代码:

namespace eval foo { 
   proc me {} { puts "yey!" }
   proc moo {} { puts "ney!" }
}
puts [ getAllNamespaceProcs foo ] ; # getAllNamespaceProcs is what I do not know how to do
Run Code Online (Sandbox Code Playgroud)

这应该产生:

> { me moo }
Run Code Online (Sandbox Code Playgroud)

谢谢。

Don*_*ows 5

info procs命令可以被告知要查找的命名空间:

info procs ::foo::*
Run Code Online (Sandbox Code Playgroud)

这将产生::foo::me ::foo::moo(或反过来;lsort如果你关心它),如果你想得到你提到的结果,你可以过滤它(例如,用lmapnamespace tail)。