从 REPL 评估 Scala 中的字符串命令

2023-11-22

有没有办法评估 Scala 中的任意字符串,就好像直接将相同的文本输入到 Scala REPL 中一样?我的意思是,我想做这样的事情:

scala> eval("val x = 42")

scala> x
res2: Int = 42

由于 Scala REPL 使用 jline (我相信)在 eval 循环中接受命令,然后编译/解释它,因此必须有一种方法来提交任意文本行。如有必要,我愿意破解 Scala REPL。


无需 REPL 黑客攻击 - 只需切换到高级用户模式,即可访问当前的scala.tools.nsc.interpreter.IMain as intp:

scala> :power
** Power User mode enabled - BEEP BOOP SPIZ **
** :phase has been set to 'typer'.          **
** scala.tools.nsc._ has been imported      **
** global._ and definitions._ also imported **
** Try  :help,  vals.<tab>,  power.<tab>    **

scala> intp.interpret("val x = 42")
x: Int = 42
res0: scala.tools.nsc.interpreter.package.IR.Result = Success

scala> x
res1: Int = 42

这至少从 2.9.1 开始有效。

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

从 REPL 评估 Scala 中的字符串命令 的相关文章

随机推荐

  • Windows 内存文件系统

    我有一个命令行可执行文件 需要在 Windows XP 上从 Java 运行 它使用文件作为输入和输出 但我想避免文件IO的开销 所以我想到了内存RAM文件系统 NetBSD 有mount mfs 您能推荐最方便的方法吗 您还应该考虑您是否
  • 如何在 F# 中定义 printfn 等效项

    由于我使用 F 进行研究 特别是使用 F 交互式 因此我希望拥有可切换的 调试时打印 功能 I can do let dprintfn printfn F 交互式 说 val dprintfn Printf TextWriterFormat
  • 如何让 xdebug/step-debugging 与 ddev 一起使用?

    我一直在我的 Drupal 项目上使用 ddev 现在想使用 xdebug 这样我就可以使用 PhpStorm 进行逐步调试 或者实际上任何 IDE 都可以 但我似乎无法让它在断点处停止 我试图遵循ddev 文档中的说明但这并没有让我继续下
  • 在 Matlab 中生成包含给定集合中至少一个元素的所有组合

    I use combnk生成组合列表 如何生成始终包含特定值的组合子集 例如 对于combnk 1 10 2 我只需要包含 3 和 或 5 的组合 有没有快速的方法可以做到这一点 好吧 在您的具体示例中 从集合 1 10 中选择两个整数 其
  • 无法更改引导工具提示标题

    我已经浏览了有关堆栈溢出的几篇文章 询问了几乎完全相同的问题 但我在这些问题上发现的内容都没有帮助 我对 JQuery 和 Bootstrap 非常陌生 所以也许我只是错过了一些非常简单的东西 我希望能够在第一次初始化后更改不同元素上的工具
  • 如何将 boost 线程添加到向量中

    我有这样的错误 vector
  • Android ZipInputStream:只有 DEFLATED 条目可以有 EXT 描述符

    在我的 Android 设备上 我需要提取从内容 uri 获取的文件 一个 xapk 据我所知 这是一个普通的 zip 存档 我正在使用这行代码创建 ZipInputStream ZipInputStream zis new ZipInpu
  • *(a++) 给出错误,但 *(a+1) 没有给出错误?其中 a 是数组名称?

    在下面的代码中 void main char a 1 5 3 4 5 6 printf d n a line gives error wrong type argument to increment printf d n a 1 第 4 行
  • Javascript:非阻塞方式等待条件为真

    我有几个 ASP NET UpdatePanel 每个都有一个与同一按钮的服务器端单击事件绑定的 AsyncPostBackTrigger 由于一次只能有一个 UpdatePanel 执行其操作 因此我使用 get isInAsyncPos
  • 理解 std::forward

    为什么编译器无法推断出模板参数std forward I mean include
  • 如何获取 IQueryable.Count 的 ToTraceString

    I use ObjectQuery IQueryable ToTraceString 获取并调整将由 LINQ 执行的 SQL 代码 我的问题是 与大多数 IQueryable 方法不同 IQueryable Count 的定义如下 pub
  • ELF动态加载器符号查找排序

    解析动态重定位时符号查找的搜索顺序是什么 当解析共享库的符号时 加载程序首先在 主可执行文件 中搜索 以让主可执行文件覆盖定义 还是什么 根据我的理解 每个可执行对象都有自己的 查找范围 主可执行文件通常是 全局 查找范围中的第一个对象 这
  • 什么是依赖注入?

    已经发布了几个问题 其中包含有关的具体问题依赖注入 例如何时使用它以及有哪些框架 然而 什么是依赖注入以及何时 为什么应该或不应该使用它 到目前为止我发现的最好的定义是詹姆斯 肖尔 James Shore 创作的一首 依赖注入 是25美元
  • 如何禁用android中网格视图中特定位置的项目点击

    我正在使用网格视图 其中每个单元格使用文本视图 我正在使用 onitemclick 在单击网格单元格时执行某些操作 我想禁用网格视图中特定位置的项目单击 我怎么做 我对 getView 中的特定位置使用了convertView setcli
  • 如何使用 DOM 通过年龄验证

    我正在尝试从 Steam 商店页面中提取一些图像 URL 例如 http store steampowered com app 35700 http store steampowered com app 252490 这是我正在使用的代码
  • 是否可以在不包含 System.Linq 命名空间的情况下使用 Linq 和 lambda?

    前段时间 我一直在从事一个相当扭曲的项目 我只能在单个范围内编写代码 然后将其放入 C 函数中 通过另一个模块 我只能使用之前声明的命名空间 我对它们没有影响 并且只能使用我工作范围内的变量 因此 我无法更改标头和包含的库 当我想对泛型集合
  • 如何拦截所有http请求,包括表单提交

    我想拦截从我的网页发出的所有 http 请求 并向请求正文添加一个参数 我的页面包含表单 我还想捕获表单提交 我尝试过使用 Jquery ajaxSend 和 Javascript 的 setRequestHeader 但两者都不适合我 我
  • 为什么 String#gsub 的内容加倍?

    s main quotes s gsub gt main quotes quotes 这似乎是错误的 我希望得到 main quotes 当我不使用转义字符时 它会按预期工作 s gsub gt main quotes 所以 逃跑一定是有什
  • 在 JAR 中包含 JAR 的类路径

    是否可以指定一个Javaclasspath包括另一个 JAR 文件中包含的 JAR 文件 如果您尝试创建一个包含您的应用程序及其所需库的单个 jar 有两种方法 据我所知 可以做到这一点 第一个是One Jar 它使用特殊的类加载器来允许嵌
  • 从 REPL 评估 Scala 中的字符串命令

    有没有办法评估 Scala 中的任意字符串 就好像直接将相同的文本输入到 Scala REPL 中一样 我的意思是 我想做这样的事情 scala gt eval val x 42 scala gt x res2 Int 42 由于 Scal