首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >以编程方式中断REPL ILoop

以编程方式中断REPL ILoop
EN

Stack Overflow用户
提问于 2011-12-01 11:37:00
回答 1查看 318关注 0票数 3

我有一个用于scala REPL api (ILoop等)的包装器。使用重构后的2.9.x类。

这样做效果很好。

由于这是一个交付给用户的工具,因此用户可能会键入以下内容:

代码语言:javascript
运行
AI代码解释
复制
while(-1 < 1) {}

用户如何从当前正在执行的代码中解脱出来?

其他帖子讨论的是

代码语言:javascript
运行
AI代码解释
复制
<ctrl> + <c> 

在一些平台上,在适当的键绑定下工作。

检查scala REPL api和任何可用的文档,并不清楚如何实际实现这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-05 06:22:14

查看文件ILoopInit.scala中的Scala REPL does it是如何。在那里安装了以下信号中断处理程序,

代码语言:javascript
运行
AI代码解释
复制
  protected def installSigIntHandler() {
    // ....
    SignalManager("INT") = {
      if (intp == null || intp.lineManager == null)
        onExit()
      else if (intp.lineManager.running)
        intp.lineManager.cancel()
      // ...
    }
  }

请注意,字段intp: IMain是在类ILoop中定义的,该类是ILoopInit的自类型。

总而言之:在你的SIGINT处理程序中,你可以用intp.lineManager.cancel中断REPL。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8340731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文