朱莉娅元编程返回符号

bra*_*ayl 2 julia

我想弄清楚如何有一个报价块,在评估时,返回一个符号.请参阅下面的示例.

function func(symbol::Symbol)
  quote
    z = $symbol
    symbol
  end
end

a = 1
eval(func(:a)) #this returns :symbol. I would like it to return :a
z
Run Code Online (Sandbox Code Playgroud)

Dan*_*egh 5

由于qoute中的最后一个符号在前面没有$,因此函数返回符号函数的符号.第二个问题是你想要返回它自己的符号,这需要你在引号内引用类似于这个问题的引用 Julia:我如何创建一个返回其参数的宏?

function func(s::Symbol)
   quote
        z = $s
        $(Expr(:quote, s))  # This creates an expresion inside the quote
   end
end
a = 1
eval(func(:a)) #this returns :a
z
Run Code Online (Sandbox Code Playgroud)