如何评估字符串/将字符串转换为Expr

时间:2016-12-22 05:26:35

标签: julia

是否有将字符串转换为Expr的方法?我尝试了以下但是它不起作用:

julia> convert(Expr, "a=2")
ERROR: MethodError: Cannot `convert` an object of type String to an object of type Expr
This may have arisen from a call to the constructor Expr(...),
since type constructors fall back to convert methods.

julia> Expr("a=2")
ERROR: TypeError: Expr: expected Symbol, got String
 in Expr(::Any) at ./boot.jl:279

2 个答案:

答案 0 :(得分:2)

正如科林所说,要转换为Expr(或Symbol),请使用parse。 然后评估您使用Expr的结果eval。 两者在一起:

julia> eval(parse("a = 2"))
2

答案 1 :(得分:1)

请注意,从Julia 1.0开始,此功能不再起作用。通常,如果您想在Julia 1.0中评估字符串表达式,则应该一直使用表达式,例如:(a=2)

julia> parse("a=2")
ERROR: MethodError: no method matching parse(::Expr)

julia> @show eval(:(a=2))
eval($(Expr(:quote, :(a = 2)))) = 2
2