【发布时间】:2019-10-24 08:10:04
【问题描述】:
以下所有这些代码行都是 Julia 表达式:
x = 10
1 + 1
println("hi")
如果你想将表达式传递给宏,它的工作方式是这样的。宏 foo 只是返回给定的表达式,它将被执行:
macro foo(ex)
return ex
end
@foo println("yes") # prints yes
x = @foo 1+1
println(x) # prints 2
如果要将字符串转换为表达式,可以使用 Meta.parse():
string = "1+1"
expr = Meta.parse(string)
x = @foo expr
println(x) # prints 1 + 1
但是,很明显,宏将 expr 视为一个符号。我在这里做错了什么?
提前致谢!
【问题讨论】:
标签: macros julia metaprogramming