命令宏
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")
但是,扩展它以处理多个表达式并不困难。