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