如何在Scala中读取环境variables

在Java中,读取环境variables是通过System.getenv()

有没有办法在斯卡拉这样做?

从Scala 2.9开始,你可以使用sys.env来达到同样的效果:

 scala> sys.env("HOME") res0: String = /home/paradigmatic 

我认为使用Scala API而不是Java是很好的。 目前有几个项目可以将Scala编译到除JVM之外的其他平台(.NET,javascript,native等)。减less对Java API的依赖,将使您的代码更加便携。

有一个对象:

 scala.util.Properties 

这有一个可以用来获取环境信息的方法集合,其中包括

 scala.util.Properties.envOrElse("HOME", "/myhome" ) 

同样的方式:

 scala> System.getenv("HOME") res0: java.lang.String = /Users/dhg 

如果使用Lightbend的configuration库(在Play2和Akka默认),那么你可以使用

foo = "default value" foo = ${?VAR_NAME}

语法来覆盖foo,如果环境variablesVAR_NAME存在。 更多细节在https://github.com/typesafehub/config#optional-system-or-env-variable-overrides

要打印所有环境variables,可以使用

 System.getenv.forEach((name, value) => println(s"$name: $value"))