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

时间:2010-02-27 17:09:48

标签: scala workflow

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

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

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

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

我非常喜欢Scala,并且在编码时感觉更多更有效率,但缺乏复杂的工具让我觉得更少生产力。两者似乎都自行取消了。

那么,我的问题是什么?我怀疑每个Scala程序员都使用好的vimemacs以及scalac来完成他们的工作。那么你使用什么工具?您开发了哪些工作流程,以便使用Scala语言加快开发速度?

修改

通过自动完成方法参数来澄清我的想法。

val myList = "foo" :: "all your base" :: Nil
myList.partition(_.length > 3)

对于上面的代码,IntelliJ无法向我提供分区要求我必须传递() => Boolean函数的信息。事实上,IntelliJ不会检查这种约束。我可以传递一个String,IntelliJ不会在我编译之前表明我的错误。

8 个答案:

答案 0 :(得分:15)

scalac

熟悉Scalac的命令行选项。

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

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

IntelliJ IDEA

使用Javadoc完成方法( CTRL - 空格 CTRL - Q / Apple-J){{ 3}}

问题中示例的参数信息( CTRL - P Screenshot

方法参数完成( CTRL - SHIFT - 空格)。 Screenshot

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

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

简单构建工具

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

  • 连续编译:{{1​​}}
  • 持续编译+测试:>~compile

我在Screenshot中配置了SBT和IntelliJ项目,您可以将其用作参考。

答案 1 :(得分:6)

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

我花了一些时间研究IDE,但它真的很快就令人沮丧。我最初错过了许多Eclipse功能,但经过一段时间的调整后,我认为现在我的工作效率并没有那么低。

我听到一些声称NetBeans是Scala IDE的当前冠军,但我还没有亲手试过。

答案 2 :(得分:4)

一种简单的方法是使用离线编译器fsc。它维护信息的缓存,标准编译器将与fsc(作为守护进程运行)对话,并在编译期间使用其缓存的信息,从而加快编译周期。

答案 3 :(得分:3)

这是我对类似thread的回答。给了Ensime一个小时后。我忍不住把话说出来。我必须说它对于Emacs软件包来说非常非常好。

答案 4 :(得分:2)

我担心你必须等待Scala变得坚如磐​​石。 十年前我和Java有同样的问题。情况更糟。

我也尝试了所有这些。对于Scala 2.7.7 IntelliJ是赢家,但对于Scala 2.8.0-SNAPSHOT Eclipse并不是那么糟糕。 在2.8.0发布后等待半年,然后再次检查。它应该变得可以忍受。

答案 5 :(得分:2)

使用Scala 2.8,请参阅this以获得更好的Maven性能。

答案 6 :(得分:2)

你应该尝试使用每晚Scala版本来尝试Netbeans 6.8。我非常满意使用这个IDE编程Scala。对于建筑,我有时也使用Ant。关于NB Scala插件的最好的事情是它快速且代码完成工作完美无瑕。

对于你给出的例子:NB给了我这个错误

alt text

代码完成:

alt text

答案 7 :(得分:0)

Eclipse Scala IDE现在相当成熟(截至3.0)。