【问题标题】:way to "run" a string in Julia?在 Julia 中“运行”字符串的方法?
【发布时间】:2021-09-10 19:55:53
【问题描述】:

在 Julia 中,如果我们将字符串设置为变量:

a = "hi"

还有一个与变量值同名的函数:

function hi()
    return "hello"
end

我们可以解析变量然后运行或评估字符串中的值吗?如果是这样,如何使用这些示例变量和函数来完成?

【问题讨论】:

  • 标题比问题宽。您的意思是“运行一个函数,给定一个包含该函数的确切名称且没有其他内容的字符串”(明确显示的情况),还是有其他未说明的期望(如复合表达式,或能够传递参数,等)?

标签: julia


【解决方案1】:

您至少可以通过两种方式做到这一点:

julia> eval(Symbol(a))()
"hello"

julia> eval(Meta.parse(a*"()"))
"hello"

在第一种方式中,我们创建一个代表函数的Symbol,并且可以立即评估一个Julia Symbol。一旦符号被解析为 Julia 对象,我们立即调用该函数(这就是为什么有一个尾随 ())。

在第二个示例中,我们将 Julia 代码解析为 String,然后对其进行评估。

必读的是元编程手册,可在此处找到:https://docs.julialang.org/en/v1/manual/metaprogramming/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-26
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多