【发布时间】:2020-05-31 14:06:08
【问题描述】:
我正在寻找一个 Julia 函数,当应用于模块名称时,它会列出模块中可用的函数。
基本上,我不想浏览源代码,而且我注意到许多模块的文档通常并不包含所有内容。
【问题讨论】:
-
如果模块中的方法没有被记录,它可能不适合外部使用。在像 Julia 这样的语言中,没有办法制作东西
private和我们都是成年人的哲学,根本不记录一些东西是相当普遍的。
我正在寻找一个 Julia 函数,当应用于模块名称时,它会列出模块中可用的函数。
基本上,我不想浏览源代码,而且我注意到许多模块的文档通常并不包含所有内容。
【问题讨论】:
private 和我们都是成年人的哲学,根本不记录一些东西是相当普遍的。
names 工作,主要是:
module MyMod
test() = 3
foo() = 4
end
names(MyMod, true)
给我
4-element Array{Symbol,1}:
:eval
:test
:foo
:MyMod
只需要去掉模块名和eval
【讨论】:
稍微扩展上一个答案,以下似乎可行:
function module_functions(modname)
list = Symbol[]
for nm in names(modname)
typeof(eval(nm)) == Function && push!(list,nm)
end
return list
end
例子:
using PyPlot
module_functions(PyPlot)
在 REPL 中产生以下输出:
165-element Array{Symbol,1}:
:contourf
:over
:xticks
:ion
:flag
:summer
:stackplot
:tricontourf
:minorticks_on
:gray
:savefig
:errorbar
:box
:figure
:vlines
:subplot_tool
:jet
⋮
:locator_params
:imshow
:pie
:sci
:axhline
:streamplot
:hist2d
:copper
:text3D
:Axes3D
:loglog
:zticks
:hexbin
:pcolor
:semilogy
:thetagrids
【讨论】: