macros - 在 Julia 中,如何显示宏的内容?

标签 macros julia

例如,我想查看@time 宏的“内部”内容。我该怎么做?

最佳答案

虽然它没有显示宏本身,但您可以使用 macroexpand 查看宏扩展的结果。 .例如:

julia> macroexpand(:(@time rand(10)))
:(begin  # util.jl, line 38:
        local #60#b0 = Base.gc_bytes() # line 39:
        local #61#t0 = Base.time_ns() # line 40:
        local #62#val = rand(10) # line 41:
        local #63#t1 = Base.time_ns() # line 42:
        local #64#b1 = Base.gc_bytes() # line 43:
        Base.println("elapsed time: ",Base./(Base.-(#63#t1,#61#t0),1.0e9)," seconds (",Base.-(#64#b1,#60#b0)," bytes allocated)") # line 44:
        #62#val
    end)

在这种情况下,它还显示了它的定义位置(util.jl,第 38 行),但这并不总是发生。由于宏本身不是一流的对象,因此诸如 which 之类的实用程序/edit/less (或它们的宏等效项)不起作用。

关于macros - 在 Julia 中,如何显示宏的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23404671/

相关文章:

用于指定多个条件的 C++ 可变参数宏

macros - 如何在 Lisp 中定义中缀符号宏,而不将其包含在类似 Lisp 的语法中

r - 使用 JuliaCall 将 NA 从 R 传递给 Julia 函数

julia - 在 Julia 中读写 RData 文件

我可以在 C 中得到 "macro polymorphism"

c - 如何在configure.ac中使用宏__GNUC__和__GNUC_MINOR__

c - 了解不同的#define 声明

multidimensional-array - Julia 中的维度不匹配

package - 在 Julia 中安装 Devectorize 包的问题

plot - 如何使用 Julia 中的 Plots 获得等比例的轴