说我想要
@fn a :b :c sort=true
扩展到
gn(a, :b, :c, sort=true)
目前,我将其写为
macro fn(x, args..., kwargs...)
esc(:(gn($x, $(args...), $(kwargs...))))
end
这似乎不起作用。
我如何扩展kwargs...
是一个宏吗?
无论如何,您都必须用冒号分隔 args 和 kwargs,但是:
julia> macro fn(x, args...; kwargs...)
esc(:(gn($x, $(args...), $(kwargs...))))
end
ERROR: syntax: macros cannot accept keyword arguments
Stacktrace:
[1] top-level scope at REPL[2]:1
但是,您当然可以自己解析“假关键字参数”。它们只是作为赋值语句传递:
julia> dump(:(@fn a :b :c sort=true))
Expr
head: Symbol macrocall
args: Array{Any}((6,))
1: Symbol @fn
2: LineNumberNode
line: Int64 1
file: Symbol REPL[5]
3: Symbol a
4: QuoteNode
value: Symbol b
5: QuoteNode
value: Symbol c
6: Expr
head: Symbol =
args: Array{Any}((2,))
1: Symbol sort
2: Bool true
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)