Em Java, a leitura de variáveis de ambiente é feita com System.getenv().
Existe uma maneira de fazer isso no Scala?
Em Java, a leitura de variáveis de ambiente é feita com System.getenv().
Existe uma maneira de fazer isso no Scala?
Respostas:
Desde o Scala 2.9, você pode usar sys.envo mesmo efeito:
scala> sys.env("HOME")
res0: String = /home/paradigmatic
Eu acho que é bom usar a API Scala em vez de Java. Atualmente, existem vários projetos para compilar o Scala em outras plataformas além da JVM (.NET, javascript, nativo etc.) Reduzir as dependências da API Java, tornará seu código mais portátil.
sys.envé apenas um Map. Você pode qualquer método que seja apropriado para você.
sys.env.getOrElse("VARIABLE", "default value")também foi útil no meu caso em que a variável de ambiente pode não estar definida.
Existe um objeto:
scala.util.Properties
isso possui uma coleção de métodos que podem ser usados para obter informações sobre o ambiente, incluindo
scala.util.Properties.envOrElse("HOME", "/myhome" )
Da mesma maneira:
scala> System.getenv("HOME")
res0: java.lang.String = /Users/dhg
Se a biblioteca de configuração do Lightbend for usada (por padrão no Play2 e Akka), você poderá usar
foo = "default value"
foo = ${?VAR_NAME}
sintaxe para substituir foo se existir uma variável de ambiente VAR_NAME. Mais detalhes em https://github.com/typesafehub/config#optional-system-or-env-variable-overrides
Para imprimir todas as variáveis de ambiente, você pode usar
System.getenv.forEach((name, value) => println(s"$name: $value"))
error: missing parameter typenos argumentos se você apenas copiar e colar isso.
(name: String, value: String), estou recebendo error: type mismatch; found : (String, String) => Unit required: java.util.function.BiConsumer[_ >: String, _ >: String].
sys.env.get("VARIABLE")que causaráOption[String]um erro, em vez de gerar, se essa variável estiver ausente.