Подтвердить что ты не робот

Как стать более продуктивным с помощью Scala? (Инструменты, IDE)

Какие инструменты вы используете для работы с 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 не укажет мою ошибку, пока не сделаю компиляцию.

4b9b3361

Ответ 1

scalac

Ознакомьтесь с параметрами командной строки для Scalac.

  • -deprecation
  • -Xprint:all: следить за прогрессом вашего кода на этапах компилятора, очень полезно, чтобы увидеть, какие импликации применяются.
  • -help/-X' / -Y` список всех параметров.

Последние ночные сборки скаляса включают в себя файл завершения bash, который упрощает их использование.

IntelliJ IDEA

Выполнение метода с помощью Javadoc (CTRL - Space, CTRL - Q/Apple-J) Снимок экрана

Информация о параметрах для примера в вопросе (CTRL - P) Снимок экрана

Завершение аргумента метода (CTRL - SHIFT - Space). Снимок экрана

Вам нужно, чтобы источник или javadocs были связаны с зависимостями в IntelliJ, чтобы увидеть Javadoc.

В настоящее время он не выделяет ошибки типа "на лету", поскольку в сложном коде все еще слишком много ложных срабатываний. Это происходит, однако.

Инструмент простой сборки

SBT сохраняет резидентный компилятор и анализирует зависимости между классами, чтобы допускать инкрементную перекомпиляцию. Он также может отслеживать изменения исходных файлов и автоматически запускать повторную компиляцию и/или выполнение теста.

  • Непрерывная компиляция: >~compile
  • Непрерывная компиляция + тест: ~test-quick

У меня есть проект SBT и IntelliJ, сконфигурированный в http://github.com/scalaz/scalaz, вы можете использовать это как ссылку.

Ответ 2

Я использую Scala ежедневно в течение последних шести месяцев. Я все еще использую vim (и ctags, чтобы найти материал), и Maven для сборки. Я получил хороший пробег из JRebel при работе над Lift веб-приложений - он будет перезаряжать изменения "на лету" без перезагрузки сервера.

Я потратил некоторое время на поиск в IDE, но он быстро удручающе. Сначала я действительно пропустил множество функций Eclipse, но после периода настройки я не думаю, что сейчас значительно менее эффективен.

Я слышал некоторые неурядицы, что NetBeans является текущим чемпионом для Scala IDE, но я не пробовал его из первых рук.

Ответ 3

Один простой способ - использовать fsc, автономный компилятор. Он поддерживает кеши информации, а стандартный компилятор будет разговаривать с fsc (работает как демон) и использовать свою кешированную информацию во время компиляции, тем самым ускоряя цикл компиляции.

Ответ 4

Вот мой ответ на аналогичный поток. После предоставления часа Ensime. Я просто не могу не понять. Я должен сказать это очень, очень хорошо написано для пакета Emacs.

Ответ 5

Я боюсь, что вам нужно ждать, пока Scala станет твердым. У меня была точно такая же проблема с Java десять лет назад. Это было еще хуже.

Я также пробовал их всех. Для Scala 2.7.7 побеждает IntelliJ, но для Scala 2.8.0-SNAPSHOT Eclipse не так уж плохо. Подождите половину года после выхода 2.8.0 и повторите проверку. Он должен стать терпимым.

Ответ 6

С Scala 2.8, см. this для получения лучшей производительности из Maven.

Ответ 7

Вы также должны дать Netbeans 6.8 попробовать с ночной конструкцией Scala. Я очень доволен программированием Scala с этой IDE. Для построения я иногда также использую Ant. Самое лучшее в плагине NB Scala заключается в том, что он работает быстро и завершение кода работает безупречно.

В примере, который вы указали: NB дает мне эту ошибку

alt text

код-завершение:

alt text

Ответ 8

Eclipse Scala IDE теперь довольно зрелая (начиная с версии 3.0).