Как читать переменные среды в Scala

В Java переменные среды чтения выполняются с помощью System.getenv().

Есть ли способ сделать это в Scala?

Ответ 1

Так как Scala 2.9, вы можете использовать sys.env для того же эффекта:

scala> sys.env("HOME")
res0: String = /home/paradigmatic

Я считаю полезным использовать API Scala вместо Java. В настоящее время существует несколько проектов для компиляции Scala на другие платформы, чем JVM (.NET, javascript, native и т.д.). Сокращение зависимостей от Java API сделает ваш код более портативным.

Ответ 2

Есть объект:

scala.util.Properties

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

scala.util.Properties.envOrElse("HOME", "/myhome" )

Ответ 3

То же самое:

scala> System.getenv("HOME")
res0: java.lang.String = /Users/dhg

Ответ 4

Если используется библиотека конфигурации Lightbend (по умолчанию в Play2 и Akka), вы можете использовать

foo = "default value" foo = ${?VAR_NAME}

для переопределения foo, если существует переменная окружения VAR_NAME. Подробнее в https://github.com/typesafehub/config#optional-system-or-env-variable-overrides

Ответ 5

Чтобы распечатать все переменные среды, вы можете использовать

System.getenv.forEach((name, value) => println(s"$name: $value"))