gpt4 book ai didi

scala - 以编程方式中断 REPL ILoop

转载 作者:行者123 更新时间:2023-12-01 10:21:24 25 4
gpt4 key购买 nike

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

这很好用。

由于这是提供给用户的工具,因此用户可能会键入以下内容:

while(-1 < 1) {}

用户如何摆脱当前正在执行的代码?

其他帖子谈论
<ctrl> + <c> 

在适当的键绑定(bind)下在某些平台上工作。

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

最佳答案

查看 Scala REPL does it在文件 ILoopInit.scala .安装了以下信号中断处理程序,

  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 .

关于scala - 以编程方式中断 REPL ILoop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8340731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com