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