Macros 朱莉娅:如何创建一个返回参数的宏?

Macros 朱莉娅:如何创建一个返回参数的宏?,macros,julia,Macros,Julia,我的问题很像,但有一点不同。我想创建一个宏(或其他任何宏),其行为如下: julia> @my-macro x + 2 :(x + 2) (请注意,x+2未包含在引号中)。朱莉娅身上有类似的东西吗?如果没有,我该怎么做?(请详细解释其工作原理。)宏的输入表达式需要被引用,因为宏返回一个表达式,该表达式将被计算,而您希望得到表达式本身,因此需要额外的引用。报价可按以下方式进行: macro mymacro(ex) Expr(:quote,ex) # this creates an

我的问题很像,但有一点不同。我想创建一个宏(或其他任何宏),其行为如下:

julia> @my-macro x + 2
:(x + 2)

(请注意,x+2未包含在引号中)。朱莉娅身上有类似的东西吗?如果没有,我该怎么做?(请详细解释其工作原理。)

宏的输入表达式需要被引用,因为宏返回一个表达式,该表达式将被计算,而您希望得到表达式本身,因此需要额外的引用。报价可按以下方式进行:

macro mymacro(ex)
    Expr(:quote,ex) # this creates an expression that looks like :(:(x + 2))
end
e=@mymacro x + 2 #returns :(x + 2)