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

基于Scala控制台的开发工作流,scala,Scala,在过去的10天里,我一直在阅读“Scala编程”并编写一些Scala代码 正如您在我的中所看到的,我开始真正喜欢这种语言了——它的速度和OCaml一样快(多亏了JVM的HotSpot技术),以其强大的静态类型系统保护我免受打字错误(和bug!),最重要的是:从企业角度来看,它不存在于一个遥远的“孤岛”(如Haskell和OCaml)。。。因为它拥有JVM的巨大生态系统 到目前为止,我唯一的问题是: 尽管我已经知道了如何在VIM和sbt quickfix下开发Scala代码,或者在Emacs和En

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

正如您在我的中所看到的,我开始真正喜欢这种语言了——它的速度和OCaml一样快(多亏了JVM的HotSpot技术),以其强大的静态类型系统保护我免受打字错误(和bug!),最重要的是:从企业角度来看,它不存在于一个遥远的“孤岛”(如Haskell和OCaml)。。。因为它拥有JVM的巨大生态系统

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

尽管我已经知道了如何在VIM和sbt quickfix下开发Scala代码,或者在Emacs和Ensime下开发Scala代码(因此具有自动完成和错误导航),但到目前为止,我还没有找到调试代码的方法,就像我在Python上做的一样简单:

bash$ python -m pdb ./someCode.py
谷歌指向的所有条目基本上都在说:“使用这个我非常喜欢的IDE…”

然而,像我这样的人更喜欢(a)和(b)一个独立的调试器,可以在他们的编辑器之外使用,这是有原因的——列举它们没有意义,你要么知道要么不知道

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

到目前为止,我的目标是:

  • sbt快速修复
    添加到我的sbt的项目/文件夹中(就在这个GitHub repos中)
  • 在终端中生成
    sbt
    ,并运行
    ~compile
    ,以便在我更改源代码时自动生成
  • VIM自动接收并显示错误
  • 当编译为绿色时,在
    sbt
    终端中点击回车键,键入
    run
Ensime甚至更好,还允许自动完成:

  • sbt-gen-ensime
  • 生成emacs,编辑我的一个.scala文件,并
    M-x ensime
  • 使用
    ensime typecheck all
    (映射到我的点文件中的F7)并在一切正常时
  • ensime sbt do run

希望我不是一个人,也希望有人能帮助我进行独立调试。。。在我完全接受Scala:-)

之前的最后一个挑战是
ensime
有一个调试模式,我不知怎么错过了。与Emacs/evil配对后,我在Emacs和Scala中度过了最后几天-这一切都非常完美。。。自动完成,在需要运行时在缓冲区中生成sbt,并进行调试


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

你到底想从调试器中得到什么?我使用的是emacs+ensime,它有一个集成的调试器(默认情况下是C-C-d前缀)。如果不是ensime,我正在用
~testQuick
~compile
@4lex1v运行
sat start
:我想要几乎所有cmd行调试器提供的真正基本的东西(
gdb
python-m pdb
perl-d
,等等),例如,在当前执行行中“l”的能力,在文件行上设置一个“b”重设点,“d”显示变量值,“n”下一行执行等。我搜索了
sat start
,但没有找到与Scala相关的链接-任何指针?这是
sbt start
,自动更正,抱歉。对不起,我以前从未使用过cmd行调试器,但您所描述的内容对我来说是完全可行的。至少我从来没有听说过任何用于scalaMy的cmd行调试器,我的理解是scala插入了与Java相同的源代码和行属性?在这种情况下,应该可以像使用java一样使用
jdb
(尽管并不总是友好的,因为scala是如何翻译成字节码的?@4lex1v:我刚刚在ensime下测试了调试,它确实满足了我的需要-谢谢你,不知怎的,我错过了ensime不仅仅是自动完成。只有一个投诉-文本模式下“当前执行行”和“断点设置”指示不可见(即
emacs-nw
)。。。我将试图向上游提出一个观点。