web-dev-qa-db-ja.com

Scalaの環境変数の読み方

Javaでは、System.getenv()を使用して環境変数を読み取ります。

Scalaでこれを行う方法はありますか?

138
summerbulb

Scala 2.9以降、sys.envを使用して同じ効果を得ることができます。

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

Javaの代わりにScala APIを使用すると良いと思います。現在、ScalaをJVM以外のプラットフォーム(.NET、javascript、ネイティブなど)にコンパイルするプロジェクトがいくつかあります。Java APIの依存関係を減らすと、コードの移植性が高まります。

207
paradigmatic

オブジェクトがあります:

scala.util.Properties

これには、環境情報を取得するために使用できるメソッドのコレクションがあります。

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

同じ方法:

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

sys.envマップ(val myenv: Map[String, String] = sys.env)上のgetOrElseでデフォルトを直接使用する:

sys.env.getOrElse(envVariable, defaultValue)

envVariableのコンテンツ、または存在しない場合はdefaultValueのコンテンツを取得します。

6
victe

Lightbendの構成ライブラリを使用する場合(Play2およびAkkaでデフォルト)、使用できます

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

環境変数VAR_NAMEが存在する場合、fooをオーバーライドする構文。詳細は https://github.com/typesafehub/config#optional-system-or-env-variable-overrides

4
jfuentes

all環境変数を出力するには、次を使用できます。

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