在Java中,使用读取环境变量System.getenv()
。
在Scala中有没有办法做到这一点?
在Java中,使用读取环境变量System.getenv()
。
在Scala中有没有办法做到这一点?
Answers:
从Scala 2.9开始,您可以使用sys.env
相同的效果:
scala> sys.env("HOME")
res0: String = /home/paradigmatic
我认为使用Scala API代替Java很好。当前有几个项目可以将Scala编译到JVM以外的其他平台(.NET,javascript,本机等)。减少对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}
如果存在环境变量VAR_NAME,则该语法将覆盖foo。更多详细信息,请参见https://github.com/typesafehub/config#optional-system-or-env-variable-overrides
要打印所有环境变量,可以使用
System.getenv.forEach((name, value) => println(s"$name: $value"))
error: missing parameter type
在args上,如果您只复制粘贴此内容。
(name: String, value: String)
,我得到了error: type mismatch; found : (String, String) => Unit required: java.util.function.BiConsumer[_ >: String, _ >: String]
。
sys.env.get("VARIABLE")
它可能会给您带来Option[String]
错误而不是抛出错误,这可能是更好的做法。