这段代码:
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
?
以下将在当前的朱莉娅夜间工作:
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)
这可以通过以下实现拉取请求来实现.不幸的是,在任何正式发布的版本中都不可能.
尽管可能有更优雅的方法来做到这一点,但如果您不希望这阻碍您在其他方面的进展,为什么不将行号传递给宏......
macro FL(message, line)
return @sprintf("%s:%d | %s", @__FILE__, line, message)
end
println(@FL("m", @__LINE__))
Run Code Online (Sandbox Code Playgroud)