4
我只是在學習宏,我對變量名以#開頭的可能性感到困惑,但這正是宏成功做到的。例如,如果我想設置一個變量等於4:爲什麼變量可以從Julia宏命名中開始#
macro testMacro(sym)
esym = esc(sym)
quote
temp = 4
$esym = temp
return
end
end
然後
julia> macroexpand(:(@testMacro α))
quote # none, line 4:
#132#temp = 4 # line 5:
α = #132#temp # line 6:
return
end
julia> @testMacro α
julia> α
4
通知臨時變量名爲#132#溫度,這是我的理解是,它會在被評估REPL就是這樣。然而,這似乎是不可能的,因爲整條線現在在技術上應該是一個評論。
如果我看一下宏中的第一個表達式,我會得到一些我無法重現的東西。
julia> macroexpand(:(@testMacro α)).args[2]
:(#132#temp = 4)
julia> ex = :(#132#temp = 4)
ERROR: syntax: incomplete: premature end of input
這是怎麼回事?我想我基本上有兩個問題。 1.)如果可能,我怎樣才能定義一個以#開頭的變量(甚至在表達式中)? 2.)假設存在這樣一個變量,朱莉婭如何設法不把它當作評論呢?