当我尝试下面的代码时:
function f(x)
Meta.parse("x -> x " * x) |> eval
end
function g(x)
findall(Base.invokelatest(f,x),[1,2,3]) |> println
end
g("<3")
Julia 抛出“适用的方法可能太新”错误。
如果我尝试下面的代码:
function f(x)
Meta.parse("x -> x " * x) |> eval
end
findall(f("<3"),[1,2,3]) |> println
Julia 可以给我正确的结果:[1, 2]
如何修改第一个代码以使用字符串在其他函数中生成函数,谢谢!
在 Julia 1.6.7 中测试
最佳答案
做
function g(x)
h = f(x)
findall(x -> Base.invokelatest(h, x) ,[1,2,3]) |> println
end
g("<3")
代码的不同之处在于,当您编写时:
Base.invokelatest(f, x)
您调用f
,但f
未重新定义。您想要做的是 invokelatest
由 f
返回的函数。
关于function - 如何在 julia 中的其他函数中使用函数中的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75054290/