我的问题与this one非常相似,但有所不同。我想创建一个行为方式的宏(或其他):
julia> @my-macro x + 2
:(x + 2)
(请注意,x + 2 不用引号括起来)。朱莉娅有类似的东西吗?如果没有,我该怎么办? (请详细说明其工作原理。)
答案 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)