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.)假设存在这样一个变量,朱莉娅如何设法不把它当作评论呢?