2
我想弄清楚如何有一個報價塊,當評估時,返回一個符號。看下面的例子。朱莉婭元編程返回符號
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
我想弄清楚如何有一個報價塊,當評估時,返回一個符號。看下面的例子。朱莉婭元編程返回符號
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
由於qoute中的最後一個符號在前面沒有$,函數返回符號函數的符號。第二個問題是,你想退回的象徵它的自我,這需要你做出報價內報價類似於此問題 Julia: How do I create a macro that returns its argument?
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
在朱莉婭的新版本有'Base.Meta.quot'功能它將參數表達式封裝到'Expr(:quote,expr)'中,就像這個答案的例子一樣。 – SalchiPapa