В Java чтение переменных среды выполняется с помощью System.getenv()
.
Есть ли способ сделать это в Scala?
В Java чтение переменных среды выполняется с помощью System.getenv()
.
Есть ли способ сделать это в Scala?
Ответы:
Начиная с Scala 2.9 вы можете использовать sys.env
для того же эффекта:
scala> sys.env("HOME")
res0: String = /home/paradigmatic
Я думаю, что хорошо использовать Scala API вместо Java. В настоящее время существует несколько проектов по компиляции Scala для других платформ, отличных от JVM (.NET, javascript, native и т. Д.). Сокращение зависимостей от Java API сделает ваш код более переносимым.
sys.env
это просто Map
. Вы можете любой метод подходит для вас.
sys.env.getOrElse("VARIABLE", "default value")
было также полезно в моем случае, когда переменная окружения не может быть определена.
Есть объект:
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"))
error: missing parameter type
на аргументы, если вы просто скопируйте и вставьте это.
(name: String, value: String)
я получаю error: type mismatch; found : (String, String) => Unit required: java.util.function.BiConsumer[_ >: String, _ >: String]
.
sys.env.get("VARIABLE")
которая даст вамOption[String]
ошибку, а не выдаст ошибку, если эта переменная отсутствует.