Scala - 基于控制台的开发工作流程

tts*_*ras 6 scala

在过去的10天里,我一直在阅读"Scala编程"并编写一些Scala代码.

正如您在我的GitHub Scala游乐场中所看到的,我开始非常喜欢这种语言 - 它与OCaml一样快(感谢JVM的HotSpot技术),通过其强大的静态类型系统保护我免受错误(以及错误!) ,最重要的是:在企业方面,它并不存在于一个偏远的"孤岛"(如Haskell和OCaml)......因为它拥有巨大的JVM生态系统.

到目前为止我唯一的问题:

即使我已经想出如何使用sbt-quickfix在VIM下开发我的Scala代码,或者在使用Ensime的Emacs下进行开发(因此具有自动完成和错误导航),我到目前为止还没有找到一种方法来调试我的代码,和Python一样容易:

bash$ python -m pdb ./someCode.py
Run Code Online (Sandbox Code Playgroud)

Google指出的所有条目基本上都在说:"使用我真正喜欢的IDE ......"

然而,有一些理由 - 没有必要列举它们,你要么知道它们要么你不知道 - 像我这样的人更喜欢(a)可编程编辑器和(b)独立的调试器,可以在编辑器之外使用.

如果你是少数志同道合的人之一,不喜欢IDE并且碰巧使用Scala,我真的很想知道你如何调试 - 实际上我有兴趣听听你的整个工作流程.

我的到目前为止是:

  • 添加sbt-quickfix到我的SBT的项目/文件夹(只需看看我在这个GitHub回购中的代码)
  • 产卵sbt在一个终端,并运行~compile,所以当我改变我的消息来源的东西,它会自动建立
  • VIM会自动收到错误并显示错误.
  • 编译为绿色时,在sbt终端中按ENTER键,键入run
  • 等等

Ensime甚至更好,也允许自动完成:

  • sbt gen-ensime
  • 产生emacs编辑我的.scala文件之一,和 M-x ensime
  • 使用ensime-typecheck-all(映射到我的dotfiles中的F7),当一切正常时......
  • ensime-sbt-do-run

这是希望我并不孤单 - 那里的人也将帮助我进行独立调试......在我完全接受Scala之前的最后一个挑战:-)

tts*_*ras 1

原来ensime有一个调试模式,我不知何故错过了。与 Emacs/evil 配合使用,我在 Emacs 和 Scala 中度过了最后几天 - 一切都运行得很好......自动完成,当我想运行时在缓冲区中生成 sbt,以及调试。

我唯一剩下的问题是如何在内部会话中使用 Ensime screen,这是我常用的操作方式(通过 SSH 连接)。Ensime 调试器当前行断点集的标记位于左边缘 - 这在图形模式 Emacs 中工作正常,但在文本模式 Emacs 中不可见。我已经开了一张票,那里的人显然有一个解决方案的计划。