如何使用Scala提高工作效率?(工具,IDE)

Mal*_*lax 21 workflow scala

您使用什么工具来使用Scala?在我的学习阶段,我使用了Scala REPL并使用TextMate攻击了一些代码并使用scalacCLI 编译它.但随着项目规模的扩大,需要更复杂的工具.

我知道Elipse,IntelliJ和Netbeans的Scala插件,我尝试了所有这些插件.最好的一个是恕我直言,但仍然远非完美.

我遇到的主要问题是缺乏自动完成功能.作为一个不那么先进的Scala编码器,我仍然不知道整个标准API,并且必须定期在Scaladoc和IDE之间切换.这感觉就像"杀死生产力".但他们都无法自动完成方法论证.(我听说方法参数不包含在编译的scala代码中,但是如何将source附加到自动完成?)

另一个非常烦人的问题是构建过程.我正在使用Maven来构建我的Scala项目并管理它们的依赖项.但是,我必须进行全面重建以测试我的更改.也许我被Java世界中的日食增量重建所破坏,但这对我来说感觉像是一个大问题.

我喜欢斯卡拉非常多,我觉得这样更高效,同时编码,但缺乏sophisticed工具,让我感觉不太生产力.两者似乎都取消了自己.

那么,我的问题是什么?我怀疑每个Scala程序员都使用良好的ol' vim或者emacsscalac他们一起工作.那么你使用什么工具?您开发了哪些工作流程以加快Scala语言的开发速度?

编辑

通过自动完成方法参数来澄清我的内容.

val myList = "foo" :: "all your base" :: Nil
myList.partition(_.length > 3)
Run Code Online (Sandbox Code Playgroud)

对于上面的代码,IntelliJ无法向我提供分区要求我必须传递() => Boolean函数的信息.事实上,IntelliJ不会检查这种约束.我可以传递一个String并且IntelliJ不会指示我的错误,直到我编译.

ret*_*nym 15

scalac

熟悉Scalac的命令行选项.

  • -deprecation
  • -Xprint:all:通过编译器阶段观察代码进度,非常有用,可以查看应用的含义.
  • -help/ -X' /-Y`列出所有选项.

scalac的最新夜间版本包含一个bash完成文件,使这些文件更易于使用.

IntelliJ IDEA

使用Javadoc(CTRL- Space,CTRL- Q/ Apple-J)完成方法截图

问题中示例的参数信息(CTRL- P)屏幕截图

方法参数完成(CTRL- SHIFT- Space).截图

您需要将源或javadoc链接到IntelliJ中的依赖项以查看Javadoc.

它目前不会突出显示类型错误,因为复杂代码中仍有太多误报.不过这很快就会到来.

简单的构建工具

SBT使编译器保持驻留状态,并分析类之间的依赖关系以允许增量重新编译.它还可以监视源文件的更改并自动触发重新编译和/或测试执行.

  • 连续编译: >~compile
  • 连续编译+测试: ~test-quick

我在http://github.com/scalaz/scalaz中配置了SBT和IntelliJ项目,您可以将其用作参考.

  • +1 IntelliJ(代码完成/ IDE)+ SBT(构建)很容易成为Scala可用的最佳工具集. (2认同)

ove*_*ink 6

在过去的六个月里,我每天都在使用Scala.我仍在使用vim(和ctags来查找东西),还有Maven用于构建.在使用Lift Web应用程序时,我已经从JRebel获得了一些好的里程- 它将在不重启服务器的情况下即时重新加载更改.

我花了一些时间研究IDE,但它很快就令人沮丧.我最初错过了很多Eclipse功能,但经过一段时间的调整后,我认为现在我的效率显着降低.

我听说过NetBeans是Scala IDE的当前冠军的一些声音,但我还没有亲自尝试过.