我希望能够转换字符串表达式,例如“2.0 * x * log(x)”,转换为Julia中的函数。通常的方式做通“X”的值是通过全局变量:在Julia中,是否可以在不使用全局变量的情况下将值传递给Expr对象?
julia> func1 = parse("2.0*x*log(x)");
julia> x = 2.718281828459;
julia> eval(func1)/2.0
2.7182818284589545
不过,我想知道如果我能避免使用全局变量。我尝试了以下两种方法,但没有成功:
方法1
julia> func2(x) = parse("2.0*x*log(x)");
julia> eval(func2(1.0))/2.0 # should return zero
2.7182818284589545
方法2
julia> function new_func1(input_value)
x = input_value
eval(func1)
end
new_func1 (generic function with 1 method)
julia> new_func1(1.0)/2.0 # should return zero
2.7182818284589545
怎么样字符串宏和一个匿名函数。 '宏p_str(X) ESC(分析(X)) 端 FUNC = X - > P “2.0 * X *日志(X)” FUNC(1.0)' –
或者,假设'funcstring =“2.0 * x * log(x)“',然后''eval(parse(”func1(x)= $ funcstring“))''将用'func1(1.0)== 0.0'定义'func1' –
感谢您的投入 - 这些工作,以及下面的答案。我也意识到也可以使用“@generated”。 – nathanielng