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

时间:2015-06-10 12:42:32

标签: macros julia

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

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

(请注意,x + 2 用引号括起来)。朱莉娅有类似的东西吗?如果没有,我该怎么办? (请详细说明其工作原理。)

1 个答案:

答案 0 :(得分:10)

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

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