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

wpk*_*kzz 2 introspection julia

在Julia中,许多Base和更接近的相关函数也是用纯Julia编写的,代码很容易实现.可以浏览存储库或本地下载的文件,并查看函数的编写/实现方式.但我认为已经有一些内置的方法可以为你做到这一点,所以你可以在REPL或Jupyter Notebook中编写如下内容:

@code functioninquestion()

得到类似的东西:

functioninquestion(input::Type) some calculations return end 没有分页通过代码.我只是不记得方法或电话.我已经阅读了手册的反思/反思部分,但我似乎无法在那里使用任何东西.我试过methods,methodswith,code_lowered,expand,似乎无法让他们给我want-

Ste*_*ski 8

目前尚不支持,但可能会在将来支持.

  • 这在技术上是正确的.`@ edit`和`@ less`依赖于函数中的回溯信息,只指向定义它们的文件.当然,如果函数是在Jupyter笔记本或REPL中定义的,那么这不起作用.或者它可能会显示自Julia加载后已更改的陈旧代码.不知道为什么在这里downvote. (3认同)

roy*_*vib 7

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

julia> @less 1 + 2
Run Code Online (Sandbox Code Playgroud)

+(x::Int, y::Int) = box(Int,add_int(unbox(Int,x),unbox(Int,y)))
Run Code Online (Sandbox Code Playgroud)

它对应于给出的线

julia> @which 1 + 2
+(x::Int64, y::Int64) at int.jl:8
Run Code Online (Sandbox Code Playgroud)