julia generar expresión con un símbolo dentro
Necesito generar una llamada Expr en la cual uno de los argumentos de clave sea un símbolo. Puedo escribirlo explícitamente así:
julia> dump(:(func(something; a=:b)))
Expr
head: Symbol call
args: Array{Any}((3,))
1: Symbol func
2: Expr
head: Symbol parameters
args: Array{Any}((1,))
1: Expr
head: Symbol kw
args: Array{Any}((2,))
1: Symbol a
2: QuoteNode
value: Symbol b
3: Symbol something
Note el argumento de clave a que se establece en el símbolo :b.
Lo que quiero hacer es generar esta expresión programáticamente donde la parte :b se interpola desde alguna variable, digamos x.
Intenté esto:
julia> x = :u
:u
julia> dump(:(func(something; a=$(x))))
Expr
head: Symbol call
args: Array{Any}((3,))
1: Symbol func
2: Expr
head: Symbol parameters
args: Array{Any}((1,))
1: Expr
head: Symbol kw
args: Array{Any}((2,))
1: Symbol a
2: Symbol u
3: Symbol something
pero en lugar de obtener un QuoteNode con el valor Symbol u, solo obtengo el símbolo u. Esto no funcionará porque cuando evalué la expresión, busca la variable u pero solo debería estar insertando el símbolo u. He intentado algunas otras cosas, pero no puedo hacerlo funcionar.
Gracias.
davy.ai
Puede usar la función
esc
para interpolar el símbolox
en la expresión:Observe el
QuoteNode
con valorSymbol u
, que es el símbolo interpolaradox
.