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.env
o 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 type
nos 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.