Что такое scala процентный оператор (%) и метод для строк?

val scalaToolsSnapshots = "Scala-Tools Maven2 Snapshots Repository" at "http://scala-tools.org/repo-snapshots"
val specs = "org.scala-tools.testing" % "specs_2.9.0-1" % "1.6.8" % "test"

Что это значит?

Ответы

Ответ 1

вы также можете упростить это объявление, используя следующее:

scalaVersion := "2.9.0-1"

scalaToolsSnapshots := "Scala-Tools Maven2 Snapshots Repository" at "http://scala-tools.org/repo-snapshots"

specs := "org.scala-tools.testing" %% "specs" % "1.6.8" % "test"

%% будет указывать на sbt для использования версии спецификаций, которая совместима с двоичным кодом с вашей версией проекта scala.

Вам следует использовать его, особенно если вы планируете обновить версию scala или если вы планируете опубликовать lib против нескольких версий scala.

под капотом, сначала String неявно преобразуется в метод GroupID с %%, который преобразует следующий String в GroupArtifactId, следующий % создает ModuleID, а последний % добавляет с помощью ModuleID.

Ответ 2

Это sbt (простой инструмент сборки) DSL, который определяет управляемые зависимости проекта.

Формат довольно похож на maven: первая строка говорит, где найти репозиторий, вторая строка определяет зависимость, например "groupId" % "artifactId" % "version" % "scope"

Подробнее см. sbt wiki page (раздел Managed Dependencies)

Ответ 3

Это действительно sbt (простой-строительный инструмент).

Метод 'at' определен в строке и возвращает Resolver. Метод "%" определен в строке и возвращает ModuleID.