Julia macros: @__FILE__ @__LINE__ en macro
julia-lang (2)
Este código:
macro FL(message)
return @sprintf("%s:%d | %s", @__FILE__, @__LINE__, message) # line 2
end
println(@FL("m")) # line 4
imprime fl.jl:2 | m
fl.jl:2 | m
. ¿Cómo puedo hacer que se imprima fl.jl:4 | m
fl.jl:4 | m
?
Aunque puede haber formas más elegantes de hacerlo, si no desea que esto bloquee su progreso en otros frentes, ¿por qué no simplemente pasar el número de línea a la macro ...?
macro FL(message, line)
return @sprintf("%s:%d | %s", @__FILE__, line, message)
end
println(@FL("m", @__LINE__))
Lo siguiente funcionará en la actual Julia todas las noches:
macro FL(message)
return :(@sprintf("%s:%d | %s", $(string(__source__.file)), $(__source__.line), $(esc(message)))) # line 2
end
println(@FL("m")) # line 4
Esto fue posible gracias a la siguiente solicitud de extracción de implementación . No es posible en ninguna versión lanzada oficialmente, desafortunadamente.