【问题标题】:Julia list all functions provided by a module [closed]Julia 列出模块提供的所有功能 [关闭]
【发布时间】:2020-05-31 14:06:08
【问题描述】:

我正在寻找一个 Julia 函数,当应用于模块名称时,它会列出模块中可用的函数。

基本上,我不想浏览源代码,而且我注意到许多模块的文档通常并不包含所有内容。

【问题讨论】:

  • 如果模块中的方法没有被记录,它可能不适合外部使用。在像 Julia 这样的语言中,没有办法制作东西 private 和我们都是成年人的哲学,根本不记录一些东西是相当普遍的。

标签: module package julia


【解决方案1】:

names 工作,主要是:

module MyMod
  test() = 3
  foo() = 4
end
names(MyMod, true)

给我

4-element Array{Symbol,1}:
 :eval
 :test
 :foo
 :MyMod

只需要去掉模块名和eval

【讨论】:

    【解决方案2】:

    稍微扩展上一个答案,以下似乎可行:

    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
    

    【讨论】:

    • 似乎不适用于 Julia 0.5.x。
    猜你喜欢
    • 2019-08-05
    • 2016-05-20
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多