如何在 REPL 中打印 Julia 中的函数代码?

How to print in REPL the code of functions in Julia?

在Julia中,很多Base和更接近的相关函数也是用纯Julia编写的,代码很容易获得。可以浏览一下存储库或本地下载的文件,看看功能如何written/implemented。但我认为已经有一些内置方法可以为你做到这一点,所以你可以在 REPL 或 Jupyter Notebook 中编写类似的东西:

@code functioninquestion()

并得到类似的东西:

functioninquestion(input::Type) some calculations return end 无需分页代码。 我只是不记得方法或调用。我已经阅读了手册的 Reflection/Introspection 部分,但我似乎无法在那里使用任何东西。我试过 methodsmethodswithcode_loweredexpand,但似乎无法让他们给出我想要的-

目前不支持,但将来可能会支持。

虽然这可能不是 OP 想要的,但 @less 阅读底层代码非常方便(所以我经常使用它)。例如,

julia> @less 1 + 2

给予

+(x::Int, y::Int) = box(Int,add_int(unbox(Int,x),unbox(Int,y)))

对应于

给出的行
julia> @which 1 + 2
+(x::Int64, y::Int64) at int.jl:8

@edit functioninquestion() 将打开您的编辑器到给定方法的位置。 获取 @edit 使用的相同信息并使用它打开文件并跳至方法定义,然后直接在 REPL(或 Jupyter)中显示它可能并不难。 编辑:在我回答时,有人提到 @less,这似乎已经完全按照您的要求做了。

现在有另一个工具,https://github.com/timholy/CodeTracking.jl。它是 Revise.jl 的一部分(并且在使用 Revise 时效果更好)。它应该在 Jupyter 中工作,并与 REPL 中定义的函数一起工作,这与 @edit/@less 不同。