在julia的嵌套引号中使用变量

时间:2019-06-28 19:44:09

标签: julia metaprogramming

代码如下:

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

但是我仍然很好奇如何以另一种方式完成它。

0 个答案:

没有答案