Runtime evaluation/In an environment: Difference between revisions

Line 543:
 
<lang julia>macro evalwithx(expr, a, b)
if expr isa AbstractString
expr = parse(expr)
end
if expr.head == :quote
expr = expr.args[1]
end
return quote
x = $a
Line 557 ⟶ 551:
end
 
@evalwithx(2 ^ x, 3, 5) # raw expression (AST)</lang>
@evalwithx(:(2 ^ x), 3, 5) # quoted expression (AST)
@evalwithx("2 ^ x", 3, 5) # expression to parse (String)</lang>
 
One can even perform the task without using macros:
Line 568 ⟶ 560:
return b - a
end
evalwithx(expr::StringAbstractString, a, b) = evalwithx(parse(expr), a, b)
 
evalwithx(:(2 ^ x), 3, 5)
Anonymous user