【发布时间】:2019-10-18 18:01:12
【问题描述】:
当我尝试下面的代码 sn-p 时,我发现变量 i 没有找到。这是为什么呢?
function evalMyExpr(expr,n)
for i in 1:n
eval(expr)
end
end
expr1 = Meta.parse("println(\"hello\")")
expr2 = Meta.parse("println(string(i))")
evalMyExpr(expr1,2) # ok
evalMyExpr(expr2,2) # UndefVarError: i not defined
请注意,如果我在宏中对其进行转换,它会起作用:
macro evalMyExprMacro(expr,n)
quote
for i in 1:$n
$expr
end
end
end
@evalMyExprMacro println(string(i)) 2 # ok
更笼统地说,接受表达式作为参数的函数和宏之间有什么区别?
【问题讨论】:
标签: macros julia metaprogramming