在任意 scala 代码位置期间放入解释器

2023-11-27

我有 Python 背景,我可以在代码中的任何位置添加

import pdb; pdb.set_trace()

在运行时,我将在该位置进入交互式解释器。 scala 是否有等效的,或者这在运行时不可能?


是的,在 Scala 2.8 上可以。请注意,要使其工作,您必须在类路径中包含 scala-compiler.jar。如果您使用以下命令调用 scala 程序scala,它将自动完成(或者在我所做的测试中似乎如此)。

然后你可以像这样使用它:

import scala.tools.nsc.Interpreter._

object TestDebugger {
  def main(args: Array[String]) {
    0 to 10 foreach { i =>
      breakIf(i == 5, DebugParam("i", i))
      println(i)
    }
  }
}

您可能会通过多个DebugParam论据。当 REPL 出现时,右侧的值将绑定到您在左侧提供的名称的 val。例如,如果我像这样更改该行:

      breakIf(i == 5, DebugParam("j", i))

然后执行将如下所示:

C:\Users\Daniel\Documents\Scala\Programas>scala TestDebugger
0
1
2
3
4
j: Int

scala> j
res0: Int = 5

您可以通过键入继续执行:quit.

您还可以通过调用无条件进入 REPLbreak,它接收到一个List of DebugParam而不是可变参数。这是完整的示例、代码和执行:

import scala.tools.nsc.Interpreter._

object TestDebugger {
  def main(args: Array[String]) {
    0 to 10 foreach { i =>
      breakIf(i == 5, DebugParam("j", i))
      println(i)
      if (i == 7) break(Nil)
    }
  }
}

进而:

C:\Users\Daniel\Documents\Scala\Programas>scalac TestDebugger.scala

C:\Users\Daniel\Documents\Scala\Programas>scala TestDebugger
0
1
2
3
4
j: Int

scala> j
res0: Int = 5

scala> :quit
5
6
7

scala> j
<console>:5: error: not found: value j
       j
       ^

scala> :quit
8
9
10

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

在任意 scala 代码位置期间放入解释器 的相关文章

  • 对于空列表,max() 应该返回什么?

    Got java util NoSuchElementException head of empty list所以我试着检查一下 但现在我明白了 info max of a few numbers FAILED info 0 did not
  • Scala 集合不一致

    为什么 Scala Collections API 中的集合和列表之间缺乏一致性 例如 有不可变的 Set 但也有可变的 Set 如果我想使用后者 我可以简单地这样做 val set Set A set new A 但是 本身不存在可变列表
  • Scala 中值类的隐式 Json 格式化程序

    我有许多值类组成了一个更大的对象案例类 final case class TopLevel foo Foo bar Bar final case class Foo foo String extends AnyVal final case
  • 是否存在与 Windows 7 内核符号相关的已知问题?

    我有几台 Windows 7 机器 我无法读取它们的内存转储 我发现一些我怀疑可能相关的东西 但并不肯定 https twitter com aionescu status 634028737458114560 https twitter
  • 如何从 SparkSQL DataFrame 中的 MapType 列获取键和值

    我的镶木地板文件中有数据 该文件有 2 个字段 object id String and alpha Map lt gt 它被读入 SparkSQL 中的数据帧 其架构如下所示 scala gt alphaDF printSchema ro
  • 当我结束调试时,如何防止 Visual Studio 2013 关闭我的 IIS Express 应用程序?

    此前在 2012 年 如果我在 Chrome 中进行调试 例如 然后停止调试器 网站将继续在 IIS Express 中运行 2013年 情况似乎不再如此 这是我需要做出的新改变吗 即使停止调试器后如何保持网站实例运行 谢谢 关闭新的 启用
  • iPhone——是否可以在 Xcode 调试器中检查 UIView 的框架?

    当调试器在断点处停止时 我在那里找不到任何 UIView 的框架 是否有可能做到这一点 编辑 由于缺乏回应而开始赏金 需要明确的是 我正在寻找一种在不添加额外调试代码的情况下查看框架的方法 另外 如果答案是 不 你不能这样做 赏金将用于解释
  • Source.getLines 中的默认参数错误 (Scala 2.8.0 RC1)

    假设我运行 Scala 2 8 0 RC1 以下 scala 代码应该打印出文件 c hello txt 的内容 for line lt Source fromPath c hello txt getLines println line 但
  • 不支持的身份验证令牌,仅当禁用身份验证时才允许 schema='none':{ schema='none' } - Neo4j 身份验证错误

    我正在尝试使用 neo4j spark connector 从 Spark 连接到 Neo4j 当我尝试连接到 Neo4j 时遇到身份验证问题org neo4j driver v1 exceptions AuthenticationExce
  • 在 Scala 和 SBT 中调试较长的编译时间

    在我的 Scala SBT 项目中 我有一个文件需要 5 分钟才能编译 所有其他的都可以在几秒钟内编译 这使得开发非常痛苦 我确信我滥用了一些 Scala 构造 但我不知道如何调试它 如何在 Scala 中调试较长的编译时间 我正在使用 S
  • Play Framework 2.3 (Scala) 中的自定义 JSON 验证约束

    我设法使用自定义约束实现表单验证 但现在我想对 JSON 数据执行相同的操作 如何将自定义验证规则应用于 JSON 解析器 示例 客户端的 POST 请求包含用户名 username 我不仅要确保该参数是非空文本 而且还要确保该用户确实存在
  • Scala Tuple2Zipped 与 IterableLike zip

    两种实现有什么区别 这个比那个好吗 有一篇博客文章说 Tuple2Zipped 性能更好 但没有提供原因 并且查看源代码我没有看到差异 val l1 List 1 2 3 val l2 List 5 6 7 val v1 l1 zip l2
  • Scala 模式匹配变量绑定

    为什么提取器返回时不能以 样式绑定变量Option
  • Intellij - 调试器断点不再工作

    我正在正常工作 调试Java Maven项目与IntelliJ 2018 2 1 然后我单击 Intellij 停止应用程序以对代码进行一些修改 当我在调试模式下再次启动应用程序时 它 调试器 只是停止工作 现在 应用程序需要大约 10 2
  • 调试:在 Android 1.0 中找不到文件

    今天我更新到 Android Studio v 1 0 在尝试编译任何项目时出现以下错误 app build intermediates classes debug 找不到文件 问题是在更新之前我没有任何问题 这是我实际尝试编译的代码 构建
  • 如何等待远程 .NET 调试器连接

    今天我遇到了一个问题 我需要远程调试程序 该程序是从另一个系统启动的 所以我真的没有机会在命令行上与它交互 不过我可以很容易地改变它的来源 我需要做的是让程序正常启动 然后等待我用调试器附加到它 我想不出一个让我快乐的方法 我确实发现了这个
  • 运行具有外部依赖项的 Scala 脚本

    我在 Users joe scala lib 下有以下 jar commons codec 1 4 jar httpclient 4 1 1 jar httpcore 4 1 jar commons logging 1 1 1 jar ht
  • 使用 scala 集合 - CanBuildFrom 麻烦

    我正在尝试编写一个接受任何类型集合的方法CC 并将其映射到一个新的集合 相同的集合类型但不同的元素类型 我正在挣扎 基本上我正在尝试实施map but 不在集合本身上 问题 我正在尝试实现一个带有签名的方法 它看起来有点像 def map
  • 比较已编译的 .NET 程序集?

    有没有什么好的程序可以与编译 NET 程序集进行比较 例如 我有 HelloWorld dll 1 0 0 0 和 HelloWorld dll 2 0 0 0 我想比较差异 我该怎么做 我知道我可以使用 NET Reflector 并使用
  • 如何针对 Node.js 中发生的每个错误发送电子邮件?

    假设我的 node js 应用程序正在运行 如果出现错误 我的意思是所有错误 不仅仅是网络错误 如果出现错误 则很重要 我如何调用函数向我发送电子邮件 基本上 在我希望它写入 err out 之前 我希望向我发送一封电子邮件 我正在使用no

随机推荐

  • pyodbc 不会引发 SQL Server 错误

    我正在尝试使用pyodbc 使用 Python 2 7 调用存储过程将记录插入 SQL Server 2012 表中 我正在路过一张临时桌子 我转储了我的 sql 当通过 SQL Server 管理控制台执行时 它生成了以下外键错误 Msg
  • 删除所有以前版本的 python

    我有一些经验C and Fortran 我想开始使用python对于我的后处理 因为我开始意识到效率有多低MATLAB是为了我需要做的事情 主要涉及数百万个点的图 我已经有几个版本了python从每次我想开始使用时就安装了 现在已经变得一团
  • HTML5:一个部分中有多个页脚/页眉

    我知道您可以在一个页面中有多个页眉 页脚 例如
  • 在 Xcode 12.5 中打开 Xcode 13.0 项目

    当我尝试打开 Xcode 项目时 我收到一条错误消息 无法打开 Users xcodeproj 处的项目 因为它 是未来的 Xcode 项目文件格式 调整项目格式 使用兼容版本的 Xcode 来允许它通过此打开 Xcode 的版本 我目前使
  • 盒子阴影仅在左右两侧

    我需要仅在元素的右侧和左侧制作盒子阴影 它应该褪色并且顶部和底部变薄 它也不应该溢出顶部和底部 主要问题是我无法阻止阴影在元素的顶部和底部溢出 这就是我所拥有的 HTML div div CSS div box shadow 0px 0px
  • React-router v4 页面刷新不起作用

    我可能错过了历史或其他什么但是当我refresh子路由上的页面 例如 login或我得到的任何其他路线 403 禁忌 代码 拒绝访问 消息 访问被拒绝 请求 ID 075CAA73BDC6F1B9 主机 ID O1n36xVCoeu aLa
  • PHP/MySQL - “最高评价”的算法

    所以我只是建立了一个星级评级系统 并尝试提出一种算法来列出 最高评级 的项目 为简单起见 以下是各列 item name average rating a decimal from 1 to 5 num votes 我正在尝试确定票数和评分
  • 在 dockerfile 中的 FROM 中使用 ARG

    问题陈述 我需要根据提供的arg从两个不同的url中提取docker projectS和project ARG url docker local artifactory com projectA By default its for A R
  • 重置 Django 缓存模板加载器的缓存

    Django 1 2 引入了一个新的模板加载器 它将数据存储在缓存中 django template loaders cached Loader 不幸的是 我未能找到有关缓存如何失效以及何时以及如何重置的任何信息 我想在我的服务器上使用它
  • TypeScript:reduce 函数 - 没有重载与此调用匹配

    尝试编写一个基本的减速器以从对象数组中返回键 的值 数组 某些键可能丢失或未定义 My code const data Key 56 Key undefined Key 44 const keys data reduce prev curr
  • $(document).ready() 和在正文末尾包含脚本有什么区别?

    在 jQuery 的 document ready 上执行 JavaScript 函数与将其包含在 HTML 正文末尾的脚本标记中之间有什么区别 Thanks DLiKS 里面的 JavaScript 代码
  • 为什么 n^O(1) 意味着“多项式时间”?

    An algorithm runs in polynomial time if it s runtime is O nk for some k However I ve also seen polynomial time defined a
  • 获取当前笔记本电脑盖子状态

    我正在编写一个 C 应用程序 专门用于笔记本电脑 我想了解盖子的状态 即何时打开以及何时关闭 我已经使用了 pInvoke 以及微软的RegisterPowerSettingNotification函数在 的帮助下这个答案 因此 通过上述内
  • PDFSharp:使用自动换行测量长文本的高度

    PDFSharp 在绘制长文本部分时支持自动文本换行 textFormatter DrawString text font XBrushes Black new XRect x y textAreaWidth 1000 XStringFor
  • 如何在列标题中使用希腊字母在 rmarkdown 中创建表格?

    我正在尝试在 rmarkdown 中创建一个表kable and kableExtra我想把希腊字母放在add header above功能 kable a format latex booktabs T longtable T gt ka
  • 更改多个 Python 实例中的变量

    是否可以同时设置类的所有实例的变量 我有一个简化的例子如下 class Object def init self self speed 0 instance0 Object instance1 Object instance2 Object
  • CSS 有类似 jQuery 的 :has() 的东西吗?

    在CSS 任何版本 中 是否有类似的东西 或者任何其他方式来做类似的事情 has jQuery 中的选择器 jQuery has selector 描述 选择元素 至少包含一个元素 匹配指定的选择器 http api jquery com
  • 如何向使用 ggplot2 创建的分区统计图添加标签?

    我正在尝试向我在 ggplot2 中创建的分区统计图添加文本注释 但目前失败 我正在寻求用名称标记每个多边形 地方政府区域 在我继续之前 我知道有人在 SO 上提出了类似的问题 并在 非常好的 教程中详细介绍了这一问题here 但是 我尝试
  • 将子目录(已重命名!)分离到新的存储库中

    我有一个存储库 我想将其目录之一分离到一个新的存储库中 This是一个完美的起点 但是有一个警告 我想要分离的目录在某个时候被重命名 如果我按照该帖子中的解决方案使用目录的新名称 那么我似乎会丢失重命名之前的历史记录 有什么想法可以调整以使
  • 在任意 scala 代码位置期间放入解释器

    我有 Python 背景 我可以在代码中的任何位置添加 import pdb pdb set trace 在运行时 我将在该位置进入交互式解释器 scala 是否有等效的 或者这在运行时不可能 是的 在 Scala 2 8 上可以 请注意