«Они используют sbt, IDE и другие инструменты в качестве своего интерфейса к компилятору» в отличие от «поэтому у них может даже не быть установлен scalac»? - PullRequest
0 голосов
/ 15 марта 2020

https://docs.scala-lang.org/overviews/compiler-options/index.html говорит

Scala компилятор scalac предлагает различные опции компилятора, также называемые флагами компилятора, чтобы изменить способ компиляции program.

В настоящее время большинство людей не запускают scalac из командной строки. Вместо этого они используют sbt, IDE и другие инструменты в качестве интерфейса к компилятору. Поэтому у них может даже не быть установлен scalac, и они не будут думать о man scalac.

Имеет ли "компилятор" ссылку на scalac?

Если да, «они используют sbt, IDE и другие инструменты в качестве своего интерфейса к компилятору,« в отличие от », поэтому у них может даже не быть установлен scalac»?

sbt положитесь на scalac?

Спасибо.

1 Ответ

2 голосов
/ 15 марта 2020
Доступ к компилятору

Scala можно получить программно через API, упакованный по зависимости scala-compiler.jar, поэтому такие инструменты, как IDE и SBT, могут реализовывать свои собственные клиентские интерфейсы через этот API для управления функциональностью компилятора. scalac - это всего лишь сценарий bash, который выполняет scala.tools.nsc.MainClass класс из scala-compiler.jar.


Использует ли sbt scalac?

Нет, sbt напрямую использует API компилятора. Одна из ключевых концепций, которую нужно понять в отношении sbt, заключается в том, что определение сборки само по себе является Scala кодом, либо ванильным, либо DSL, но, тем не менее, Scala. версия Scala, использованная для компиляции определения сборки, отделена от версии Scala, использованной для компиляции проекта. Исходный код определения сборки в build.sbt и project/*.scala будет скомпилирован с использованием версии Scala, указанной косвенно с помощью параметра sbt.version=1.2.8 в project/build.properties, тогда как собственно исходный код проекта в src/main/scala/* будет скомпилирован с использованием версии Scala указывается непосредственно через scalaVersion := "2.13.1", настройка в build.sbt. Обратите внимание, как они действительно могут отличаться. Думайте об определении сборки как о просто другом Scala приложении , которое использует sbt API для своей реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...