В Java переменные среды чтения выполняются с помощью System.getenv()
.
Есть ли способ сделать это в Scala?
Так как Scala 2.9, вы можете использовать sys.env
для того же эффекта:
scala> sys.env("HOME")
res0: String = /home/paradigmatic
Я считаю полезным использовать API Scala вместо Java. В настоящее время существует несколько проектов для компиляции Scala на другие платформы, чем JVM (.NET, javascript, native и т.д.). Сокращение зависимостей от Java API сделает ваш код более портативным.
Есть объект:
scala.util.Properties
у этого есть набор методов, которые могут быть использованы для получения информации об окружающей среде, включая
scala.util.Properties.envOrElse("HOME", "/myhome" )
То же самое:
scala> System.getenv("HOME")
res0: java.lang.String = /Users/dhg
Если используется библиотека конфигурации Lightbend (по умолчанию в Play2 и Akka), вы можете использовать
foo = "default value"
foo = ${?VAR_NAME}
для переопределения foo, если существует переменная окружения VAR_NAME. Подробнее в https://github.com/typesafehub/config#optional-system-or-env-variable-overrides
Чтобы распечатать все переменные среды, вы можете использовать
System.getenv.forEach((name, value) => println(s"$name: $value"))
sys.env.get("VARIABLE")
который даст вамOption[String]
а не выдавать ошибку, если эта переменная отсутствует.sys.env
- это простоMap
. Вы можете любой метод подходит для вас.