命令巨集

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")

但是,擴充套件它以處理多個表示式並不困難。