function - 如何在 julia 中的其他函数中使用函数中的表达式

标签 function julia expression metaprogramming

当我尝试下面的代码时:

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未重新定义。您想要做的是 invokelatestf 返回的函数。

关于function - 如何在 julia 中的其他函数中使用函数中的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75054290/

相关文章:

julia - Julia语言代码括号示例中看到的 `julia>`是什么意思?

arrays - 如何直接修改Julia库Flux中的权重值?

c - ANSI C 中的复合语句( block )是否被括号表达式包围?

php - 函数变成死循环

jquery - 加载图像数组后执行函数

javascript - 当函数的行为类似于类但不使用 class 关键字或 "new"关键字(在 Javascript 中)时,它被称为什么?

multithreading - Julia (Julia)中带有突变操作的for循环上的多线程

c# - 表达式树解析,变量最终成为常量

PHP正则表达式字符串中最多允许1个 '.'或 '_'字符,并且 '.'或 '_'不能位于字符串的开头或结尾

postgresql - 如何创建不返回任何内容的函数