代码如下:
macro createmod(m)
yy = 51
sym = :z
ex = quote
module $(esc(m))
end
$(esc(m)).eval(quote
x = 3
y = $$(yy)
$$(esc(esc(QuoteNode(sym)))) = 55
end)
end
ex.head = :toplevel
ex
end
@createmod CC
CC.z
我知道了:ERROR: syntax: invalid syntax (escape (escape (inert z)))
有什么想法可以实现吗?
我本可以这样做:
macro createmod(m)
yy = 51
sym = :zz
ex = quote
# create the module
module $(esc(m))
# create variables inside module
const $(esc(sym)) = 55
end
end
ex.head = :toplevel
ex
end
@createmod CC
CC.zz
但是我仍然很好奇如何以另一种方式完成它。