Julia:我如何创建一个返回其参数的宏?

Pie*_*one 4 macros julia

我的问题与这个问题非常相似,但有所不同.我想创建一个行为方式的宏(或其他):

julia> @my-macro x + 2
:(x + 2)
Run Code Online (Sandbox Code Playgroud)

(请注意,x + 2 包含在引号中).朱莉娅有类似的东西吗?如果没有,我该怎么办?(请详细说明其工作原理.)

Dan*_*egh 10

需要引用宏的输入表达式,因为宏返回一个被计算的表达式,而您希望获取表达式本身,因此需要额外的引用.报价可以完成如下:

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