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

Какие Инструменты делают Вас, люди используют для работы с Scala? Для моего приобретения знаний фазы я использовал Scala REPL и взломал некоторый код с TextMate и скомпилировал его с scalac CLI. Но поскольку проекты увеличиваются в размере, намного более сложные инструменты требуются.

Я знаю о плагинах Scala для Elipse, IntelliJ и Netbeans, и я судил их всех. Лучшим является, по моему скромному мнению, IntelliJ, но все еще далеко от того, чтобы быть прекрасным.

Главной проблемой, которую я имею, является отсутствие автоматического завершения. Как not-so-advanced кодер Scala, я все еще не знаю целый стандартный API и имею для переключения между Scaladoc и IDE регулярно. Это испытывает желание "уничтожать производительность". Но им всем не удается автоматически заполнить аргументы метода. (Я слышал, что аргументы метода не включены в скомпилированный код scala, но что относительно того, чтобы присоединить источник, чтобы сделать автоматическое завершение?)

Другой очень раздражающей проблемой является процесс сборки. Я использую Знатока, чтобы разработать мои проекты Scala и управлять их зависимостями. Но тем не менее, я должен сделать, полное восстанавливает для тестирования моих изменений. Возможно, я испорчен возрастающими Затмениями, восстанавливают доступный в мире Java, но похоже на большую проблему мне.

Мне нравится Scala очень, и я чувствую путь, более продуктивный при кодировании, но отсутствие sophisticed инструментов позволило мне чувствовать себя менее продуктивным. И оба, кажется, уравновешивают себя.

Так, каков мой вопрос? Я сомневаюсь относительно каждого программиста Scala старое доброе использование vim или emacs наряду с scalac сделать их работу. Таким образом, какие инструменты Вы используете? Какие рабочие процессы Вы разработали для обеспечения скорости в разработку с языком Scala?

Править

Разъяснение, что я ment с автозавершением аргументов метода.

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

Для кода выше, IntelliJ не удается предоставить мне информацию, что раздел требует, чтобы я передал a () => Boolean функция. На самом деле IntelliJ не проверяет на это ограничение. Я могу передать a String и IntelliJ не укажет на мою ошибку, пока я не сделаю компиляцию.

21
задан Vadim Kotov 15 August 2017 в 08:21
поделиться

5 ответов

scalac

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

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

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

IntelliJ IDEA

Завершение метода с помощью Javadoc ( CTRL - Пробел , CTRL - Q / Apple-J) Снимок экрана

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

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

Для просмотра документации Javadoc необходимо, чтобы исходный код или документы javadoc были связаны с зависимостями в IntelliJ.

В настоящее время он не выделяет ошибки типа «на лету», так как в сложном коде все еще слишком много ложных срабатываний. Однако это приближается.

Simple Build Tool

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

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

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

15
ответ дан 29 November 2019 в 21:05
поделиться

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

4
ответ дан 29 November 2019 в 21:05
поделиться

В Scala 2.8 см. this для повышения производительности Maven.

2
ответ дан 29 November 2019 в 21:05
поделиться

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

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

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

6
ответ дан 29 November 2019 в 21:05
поделиться

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

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

2
ответ дан 29 November 2019 в 21:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: