Какие инструменты вы используете для работы с Scala? Для моей фазы обучения я использовал Scala REPL и взломал некоторый код с помощью TextMate и скомпилировал его с CLI scalac
. Но по мере роста объемов проектов требуются гораздо более сложные инструменты.
Я знаю плагины Scala для Elipse, IntelliJ и Netbeans, и я пробовал их все. Лучший из них - IMHO IntelliJ, но все еще далек от совершенства.
Основная проблема, которую я испытываю, - это отсутствие автоматического завершения. Как не очень продвинутый кодер Scala, я до сих пор не знаю всего стандартного API и должен регулярно переключаться между Scaladoc и IDE. Это похоже на "убийство производительности". Но все они не могут автоматически завершить аргументы метода. (Я слышал, что аргументы метода не включены в скомпилированный код Scala, но как насчет прикрепления источника к автозавершению?)
Еще одна очень неприятная проблема - процесс сборки. Я использую Maven для создания моих проектов Scala и управления их зависимостями. Но тем не менее, я должен выполнить полную перестройку, чтобы проверить мои изменения. Возможно, я испорчен инкрементной перестройкой Eclipses, доступной в мире Java, но для меня это очень большая проблема.
Мне очень нравится Scala, и я чувствую себя более продуктивным во время кодирования, но отсутствие софистических инструментов позволяет мне чувствовать себя менее продуктивным. И оба, похоже, отменяют себя.
Итак, в чем мой вопрос? Я сомневаюсь, что каждый программист Scala использует добрые ol vim
или emacs
вместе с scalac
для выполнения своей работы. Итак, какие инструменты вы используете? Какие рабочие процессы вы разработали для ускорения разработки с помощью языка Scala?
Изменить
Уточнение того, что я использую при автозавершении аргументов метода.
val myList = "foo" :: "all your base" :: Nil
myList.partition(_.length > 3)
В приведенном выше коде IntelliJ не предоставит мне информацию, которую раздел требует, чтобы я передал функцию () => Boolean
. На самом деле IntelliJ не проверяет этот контраст. Я могу передать String
, и IntelliJ не укажет мою ошибку, пока не сделаю компиляцию.