Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Scala中读取环境变量_Scala_Environment Variables - Fatal编程技术网

如何在Scala中读取环境变量

如何在Scala中读取环境变量,scala,environment-variables,Scala,Environment Variables,在Java中,通过System.getenv()读取环境变量 在Scala中是否有这样做的方法?同样的方法: scala> System.getenv("HOME") res0: java.lang.String = /Users/dhg 由于Scala 2.9,您可以使用sys.env实现相同的效果: scala> sys.env("HOME") res0: String = /home/paradigmatic 我认为使用ScalaAPI而不是Java很好。目前有几个项目将S

在Java中,通过
System.getenv()
读取环境变量

在Scala中是否有这样做的方法?

同样的方法:

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

由于Scala 2.9,您可以使用
sys.env
实现相同的效果:

scala> sys.env("HOME")
res0: String = /home/paradigmatic
我认为使用ScalaAPI而不是Java很好。目前有几个项目将Scala编译到JVM以外的其他平台(.NET、javascript、native等)。减少对Java API的依赖,将使您的代码更具可移植性。

有一个对象:

scala.util.Properties
这有一组方法可用于获取环境信息,包括

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

如果使用了Lightbend的配置库(默认情况下在Play2和Akka中),则可以使用

foo=“默认值”
foo=${?VAR_NAME}

如果存在环境变量VAR_NAME,则重写foo的语法。 有关详细信息,请参见

要打印所有环境变量,您可以使用

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

sys.env
Map(
val myenv:Map[String,String]=sys.env
)上直接使用默认值与
getOrElse


您可以获得
envVariable
的内容,或者如果它不存在,
defaultValue

使用
sys.env.get(“变量”)
可能是更好的做法,它将为您提供一个
选项[String]
,而不是在缺少该变量时抛出一个错误。@CristianVrabie我更喜欢它,在大多数情况下。但是
sys.env
只是一个
Map
。您可以选择任何适合您的方法。
sys.env.getOrElse(“变量”,“默认值”)
在我的情况下也很有用,因为环境变量可能没有定义。现在我每天都在使用Scala,我必须将接受的答案移到@paradigmatic的答案。它使用Scala API,如果按照注释中的建议使用,可以返回一个选项。我也更喜欢属性。它允许检索选项,并具有常用属性的名称。
错误:如果您只是复制粘贴此参数,则参数上缺少参数类型。@thundergolfer:我的计算机上当前没有安装Scala。你知道缺少什么了吗?在将参数更改为
(名称:String,值:String)
后,我得到了
错误:类型不匹配;找到:(String,String)=>所需的单位:java.util.function.BiConsumer[\u>:String,\u>:String]
。以下是一些有效的方法,但需要导入:
sys.env.getOrElse(envVariable, defaultValue)