执行字符串?

2024-03-13

我想执行一个字符串,但是发现没有exec朱莉娅函数:

a = 1
println(exec("a")) # ERROR: exec not defined

有没有办法在 Julia 中执行字符串?

最初的问题是我试图记录变量列表:

thingsToLog = ["a", "b", "c"]

to file:

open(logFile, "w") do io
    for thing in thingsToLog
        write(io, @sprintf("%s = %s\n", thing, eval(thing)))
    end
end

如上所述,您可以调用 parse 从字符串创建 AST,然后调用eval关于这一点。但在您的示例中,创建列表似乎更容易

thingsToLog = [:a, :b, :c]

以避免通过parse根本不。通常,将像这样的带引号的 AST(在本例中为符号)直接传递给eval;如果一组固定的 AST 还不够,您还可以将 AST 插入引用的 AST(更多详细信息,请参阅手册)。

说到这里,还有几句话要注意eval:

  • 根据设计,它仅在全球范围内有效。
  • 它并不快,因为它需要编译新代码。因此,它最好保留用于只需要执行一次的评估(例如评估生成的方法或类型定义),或者当速度并不真正重要时。
  • 它会使代码变得非常难以理解。

关于本地范围内的评估,阅读这篇文章让我意识到大多数所需的功能已经存在于Debug包,所以我刚刚发布了一个允许这样做的更新(尽管上面的警告仍然适用)。您想要在本地范围内评估代码的函数必须用@debug_analyze宏。然后您可以使用以下方法检索表示本地范围的对象@localscope,并通过使用相应的符号进行索引来从中检索局部变量的值。例子:

using Debug
@debug_analyze function f(x,y,z,thingsToLog)
    s = @localscope
    for sym in thingsToLog
        println(sym, " = ", s[sym])
    end
end
f(1,2,3,[:x,:z])

打印

x = 1
z = 3

有关更多详细信息,请参阅本节 https://github.com/toivoh/Debug.jl#evaluation-of-code-in-local-scope in the Debug包自述文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

执行字符串? 的相关文章

  • 根据另一列的相应行值创建行子集?

    让 CSV 包含两列 年龄 和 性别 其中 Age 30 24 55 61 70 21 Gender Male Female Male Male Male Female 我希望它向我显示与 Gender Male 相对应的所有 Age 值
  • 相当于 Python 中 Julia 中的“with”?

    Julia 有与 Python 相当的东西吗 with 也许作为一个宏 这非常有用 例如 自动关闭打开的文件 Use a do堵塞 关于 do 块的文档是here https en wikibooks org wiki Introducin
  • Julia 多次调度失败

    v06 我想写一个需要 2 到 3 个参数的签名 第一个是整数或整数向量 第二个是整数向量或整数矩阵 第三个是整数向量或未指定 我第一次尝试是这样的 function foo a Union Integer Vector Integer b
  • Julia 自定义类型分配

    我尝试从 Julia 中的自定义类型分配多个元素 但是我不知道该怎么做 或者换句话说 我想重载赋值运算符以返回该类型中包含的所有元素的元组 这是所需的行为 type foo a b end a b foo 1 2 a gt 1 这是错误消息
  • 从 Julia 程序执行 >> shell 运算符

    我试图使用反引号从 Julia 内部附加一个文件 run cat file2 gt gt file1 但这行不通 似乎 gt gt 运算符无法正确解释 有没有办法通过管道或其他技巧来做到这一点 如果您尝试以编程方式执行此操作 则主要问题正文
  • Julia DataFrames 中的高效自定义排序?

    有没有一种快速的方法来指定自定义订单sort sort 在 Julia 数据框架上 julia gt using DataFrames julia gt srand 1 julia gt df DataFrame x rand 10 y r
  • Julia - 迭代字典中的键组合

    有没有一种巧妙的方法来迭代字典中的键组合 我的字典有这样的值 1 gt 1 2 2 3 gt 15 3 gt 6 7 8 4 9 11 gt 3 我需要做的是获取所有长度的键组合1 n where n可能是FX 3 就像上面的例子一样 我想
  • 带有 varargs 的 Julia @evalpoly 宏

    我正在尝试使用 Julia 的 evalpoly宏 当我手动提供系数时它可以工作 但我一直无法弄清楚如何通过数组提供这些系数 julia gt VERSION v 0 3 5 julia gt evalpoly 0 5 1 2 3 4 3
  • 如何创建并推送到共享或分布式数组数组?

    我编写了 Julia 代码 其中初始化一个空数组 如下所示 a 稍后在代码中 我简单地推送到该数组 如下所示 推 a b 其中 b c d e 是另一个数组 每个 b 可以具有不同的长度 这在非并行化代码中工作得很好 但是 我想在并行代码中
  • Julia 中 @with_kw 和 Base.@kwdef 之间的区别?

    受到这个问题评论的启发 with kw 在 Julia 中做什么 https stackoverflow com questions 69586136 what does with kw do in julia 有什么区别 with kw
  • Julia 中过时的软件包列表

    有没有办法列出 Julia 中所有过时的软件包 相当于pip3 list outdated在Python中 我做了几次搜索 1 https docs julialang org en v1 stdlib Pkg 2 https pkgdoc
  • Julia:如何使用 PyPlot 创建不同大小的子图?

    我想创建一个包含多个绘图的图形 不过我希望能够使每个图具有不同的大小 例如 我希望第一个子图的宽度大约是第二个子图的两倍 我希望做这样的事情 using PyPlot a rand 500 900 b rand 500 400 notice
  • 如何给DArray的元素设置值?

    我正在探索 Julia 的并行计算并尝试了以下方法 a dzeros 5 a 1 5 但刚刚收到此错误 setindex not defined for DArray Float64 1 Array Float64 1 嗯 我以为手册上说s
  • 当 Jupyter 单元包含函数、循环或其他块时,是否可以将其拆分为多个单元?

    Jupyter 的一项功能是能够一次执行一个单元 如果一个单元格有很多语句 通常可以 希望 将其拆分为更小的单语句单元格 除非涉及块 例如 if for def 等 这个问题之前以不同的方式提出过 在Jupyter中逐步执行算法 https
  • 如何从字符串转换为数组?

    If s 1 2 3 4 5 我们如何从中获得一个整数数组 我想返回 5 个元素Array Int64 1 1 2 3 4 5 正如 isebarn 使用的那样 split s 对于将字符串拆分为单词非常有用 默认情况下按空格拆分 juli
  • 获取参数类型的参数

    假设我定义了一个这样的类型 type Point Tx Ty end 然后我创建一个这种类型的变量 例如 a Point Int64 something 现在 我只知道我可以获得以下类型a by typeof a 那是 Point Int6
  • 并行模拟写入同一文件

    我的目标是在集群上并行运行 10 000 个左右的 Julia 编码模拟 每个模拟独立于所有其他模拟 每个模拟都有一个要输出的数字 以及有关哪个模拟产生该数字的 3 列信息 因此 强制每个模拟打印在单独的文件上对我来说听起来有点愚蠢 我可以
  • 在我的 Julia 1.0.0 REPL 中,LOAD_PATH 返回意外结果

    我的 Julia REPL 帮助为 LOAD PATH 提供了以下内容 help gt LOAD PATH search LOAD PATH LOAD PATH An array of paths for using and import
  • 在 Julia 中保存和检索字典的正确方法是什么?

    我已经看到 Julia 充分解释了 MAT 文件 这些文件中的结构可以毫无问题地作为字典读取 现在我创建了自己的字典 其结构如下 String String gt Int Int Int 在每个条目上 我可以保存它writedlm它产生了一
  • Julia Threads.@threads 比单线程性能慢

    我正在尝试求解一维热方程的数值 我正在使用有限差分 并且在 Julia 中使用 threads 指令时遇到一些问题 特别是下面有相同代码的两个版本 第一个是单线程 而另一个使用 threads 除了 thread指令之外 它们是相同的 fu

随机推荐

  • 使用回溯的数独求解器

    我最近一直在研究回溯数独求解算法 目前我想问一下我应该如何将我的solve 方法从void更改为boolean 我正在使用一个非常简单的回溯算法 它目前工作正常 但我宁愿有一个布尔值而不是一个空值 因为有一个打印堆栈不是很好 Thanks
  • 如何截断C char*?

    就如此容易 顺便说一句 我正在使用 C 我已经阅读了 cplusplus com 的 cstdlib 库函数 但我找不到一个简单的函数 我知道字符的长度 我只需要erase最后三个字符 我可以使用 C 字符串 但这是用于处理文件 它使用 c
  • 计算一个字节中零和一的数量

    我之前发布了一个程序来查找一个字节中 1 的总数 现在我正在尝试查找一个字节中 0 的数量 以下是我的代码 MOV AL 1 MOV CX 08H MOV BX 0000H MOV DX 0000H Zero SHR AL 01H JZ e
  • 在 Android 中唤醒/睡眠时启动 Activity

    我想制作一个计时器 当 Android 设备被唤醒时开始计时 当 Android 设备设置为睡眠时停止计时 我什么也没找到 如何触发活动 通过唤醒 睡眠 我希望你能帮助我解决我的问题 我使用了像 timonvlad 所说的 Broadcas
  • C# 中的分段下载?

    请原谅我对这个问题的无知 我想用 C 编写一个应用程序 可以以相同的方式从服务器下载文件打倒他们 http www downthemall net 做 DownThemAll 似乎打开了四个到 HTTP 服务器的连接来下载同一文件 我只是想
  • 从 std::tuple 函数 QtConcurrentRun 获取(多)返回值

    您好 我有一个用于在 Qt 中生成某个文件的 MD5 的类 我使用元组从中返回多个值 我想在其他线程上运行它 因为生成所有文件 MD5 可能需要一些时间并且它的冻结 gui我决定使用Qt并发运行在其他线程上运行它 但到目前为止我对如何获取所
  • 捕获代号一中的未知主机异常

    我正在使用构建一个应用程序代号一 http www codenameone com 问题是 我需要使用该应用程序访问 URL 该 URL 返回了我在屏幕上显示的一些结果 所以我用这些行来做到这一点 ConnectionRequest c n
  • Spark 执行器无法访问 kubernetes 集群内的 ignite 节点

    我正在将我的 Spark 作业与现有的 ignite 集群连接起来 我使用服务帐户名spark为了它 我的驱动程序能够访问 ignite pod 但我的执行程序无法访问它 这就是执行程序日志的样子 Caused by java io IOE
  • mongodb count 与 find with count [重复]

    这个问题在这里已经有答案了 我正在对 mongo 版本 2 4 和 3 2 集合中的文档进行计数 馆藏非常大 有3821085篇文档 我需要统计所有文件并附上参考资料 id 我尝试了两种不同的查询 db SampleCollection f
  • 安装 .apk 时,如何将 .apk 中的某些文件解压到 /data/data/ 文件夹?

    我的 Android 应用程序需要另一个 NATIVE 应用程序可执行文件在 Android 应用程序之前运行 以便它们可以通过套接字进行通信 Android 应用程序有一个 JNI 层来处理客户端通信 现在我需要将本机可执行文件与 apk
  • Haskell 的“尾部”函数的时间复杂度是多少?

    当我在阅读 Haskell 教程时 我心里想 Haskell 的时间复杂度是多少tail功能有 以及为什么 我在任何文档中都找不到答案 我猜想对于一个大小为 n 的列表 tail函数将是O n 即将尾部复制到一个新列表并返回该列表 但话又说
  • AndEngine GLES2 中未找到 SimpleLevelLoader 类

    我是 AndEngine 的新手 工作时从AndEngine 教程 http www matim dev com full game tutorial part 11 html 未找到以下类 我尝试从 AndEngine 导入所有库 但仍然
  • 将 DataTable 转换为 JSON,每行包含键

    我认为以下将是一项非常常见的任务 并假设会有一个简单的解决方案 但我找不到 如果我有以下结构的数据表 ID Name Active ID1 John TRUE ID2 Bill FALSE 我想将其序列化为 JSON 对象 其中 ID 列是
  • 如何将浮点数数组转换为 byte[] 并返回?

    我有一个浮点数组需要转换为字节数组并返回浮点 任何人都可以帮助我正确地执行此操作吗 我正在使用 bitConverter 类 发现自己在尝试附加结果时陷入困境 我这样做的原因是为了可以将运行时值保存到 IO 流中 如果重要的话 目标存储是
  • jQuery noConflict() 问题

    因此 我正在一个每次加载页面时都会注入 jQuery 1 2 6 的平台上进行开发 我开发的页面使用 jQuery 1 4 2 因此当我的页面加载时 我的页面上有 2 个 jQuery 实例 为了避免任何冲突 我在页面外部的 JS 文件中包
  • 当 WHERE 子句中只有单个列时,SQL Server 是否会使用复合索引?

    假设我有一张桌子 CREATE TABLE Users Id INT IDENTITY 1 1 FirstName VARCHAR 40 LastName VARCHAR 40 查询通常是开启的名 or LastName 而且还关于名 an
  • Angular 8 - 服务注入和工厂模式

    我已经简要阅读了几篇文章和官方 Angular 指南 但它们似乎无法帮助我解决我的任务 这就是我想要的和所做的 假设我有带有产品列表页面的 Angular 应用程序 此外 这个应用程序将来还会有类别列表页面和一些N列表页面 正如您所看到的
  • MEAN 堆栈上的登录系统架构?

    我正在 MEAN 堆栈 MongoDB Express AngularJS 和 node js 上开发一个 Web 应用程序 我正在开发一个登录系统 并且还将保护一些 Angular 路由 以便只有登录的用户才能访问它们 我正在尝试思考实现
  • 计算数字根,有更好的方法吗?

    这就是我计算整数的数字根的方法 import acm program public class Problem7 extends ConsoleProgram public void run println This program cal
  • 执行字符串?

    我想执行一个字符串 但是发现没有exec朱莉娅函数 a 1 println exec a ERROR exec not defined 有没有办法在 Julia 中执行字符串 最初的问题是我试图记录变量列表 thingsToLog a b