Julia macros:宏观中的@__FILE__ @__LINE__

Rol*_*ter 6 macros julia

这段代码:

macro FL(message) 
    return @sprintf("%s:%d | %s", @__FILE__, @__LINE__, message) # line 2
end
println(@FL("m")) # line 4
Run Code Online (Sandbox Code Playgroud)

打印fl.jl:2 | m.我怎样才能打印出来fl.jl:4 | m

Isa*_*ton 5

以下将在当前的朱莉娅夜间工作:

macro FL(message) 
    return :(@sprintf("%s:%d | %s", $(string(__source__.file)), $(__source__.line), $(esc(message)))) # line 2
end
println(@FL("m")) # line 4
Run Code Online (Sandbox Code Playgroud)

这可以通过以下实现拉取请求来实现.不幸的是,在任何正式发布的版本中都不可能.


hou*_*anb 3

尽管可能有更优雅的方法来做到这一点,但如果您不希望这阻碍您在其他方面的进展,为什么不将行号传递给宏......

macro FL(message, line)
    return @sprintf("%s:%d | %s", @__FILE__, line, message)
end
println(@FL("m", @__LINE__))
Run Code Online (Sandbox Code Playgroud)