我希望能夠轉換字符串表達式,例如「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