Error: no method matching iterate(::Expr)
Error: no method matching iterate(::Expr)
macro superM(arg, argc)
map(foo,argc)
end
@superM test {1,2}
我只想将参数 argc
传递给映射函数,但出现此错误:no method matching iterate(::Expr)
argc
是一个表达式,其 head
是大括号 {}
:
julia> dump(:({1, 2}))
Expr
head: Symbol braces
args: Array{Any}((2,))
1: Int64 1
2: Int64 2
所以你真正想要的是表达式 {1,2}
args
字段
julia> macro superM(arg, argc)
map(identity,argc.args)
end
@superM (macro with 1 method)
julia> @superM test {1,2}
2-element Vector{Int64}:
1
2