命令巨集
Version >= 0.6.0-dev
在 Julia v0.6 及更高版本中,除常規字串巨集外,還支援命令巨集。一個命令巨集呼叫就好
mymacro`xyz`
被解析為巨集呼叫
@mymacro_cmd "xyz"
請注意,這與字串巨集類似,除了使用 _cmd
而不是 _str
。
我們通常使用命令巨集程式碼,在許多語言中,程式碼巨集經常包含 "
但很少包含`
。例如,使用命令巨集重新實現簡單版本的 quasiquoting 是相當簡單的 :
macro julia_cmd(s)
esc(Meta.quot(parse(s)))
end
我們可以使用內聯的這個巨集:
julia> julia`1+1`
:(1 + 1)
julia> julia`hypot2(x,y)=x^2+y^2`
:(hypot2(x,y) = begin # none, line 1:
x ^ 2 + y ^ 2
end)
或多線:
julia> julia```
function hello()
println("Hello, World!")
end
```
:(function `hello()` # none, line 2:
println("Hello, World!")
end)
支援使用 $
進行插值:
julia> x = 2
2
julia> julia`1 + $x`
:(1 + 2)
但這裡給出的版本只允許一個表示式:
julia> julia```
x = 2
y = 3
```
ERROR: ParseError("extra token after end of expression")
但是,擴充套件它以處理多個表示式並不困難。