Как читать переменные среды в 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"))