In Java erfolgt das Lesen von Umgebungsvariablen mit System.getenv()
.
Gibt es eine Möglichkeit, dies in Scala zu tun?
In Java erfolgt das Lesen von Umgebungsvariablen mit System.getenv()
.
Gibt es eine Möglichkeit, dies in Scala zu tun?
Antworten:
Seit Scala 2.9 können Sie sys.env
für den gleichen Effekt verwenden:
scala> sys.env("HOME")
res0: String = /home/paradigmatic
Ich finde es schön, die Scala-API anstelle von Java zu verwenden. Derzeit gibt es mehrere Projekte, um Scala auf anderen Plattformen als JVM (.NET, Javascript, native usw.) zu kompilieren. Wenn Sie die Abhängigkeiten von der Java-API reduzieren, wird Ihr Code portabler.
sys.env
aber nur ein Map
. Sie können jede Methode wählen, die für Sie geeignet ist.
sys.env.getOrElse("VARIABLE", "default value")
war auch in meinem Fall hilfreich, in dem die Umgebungsvariable möglicherweise nicht definiert ist.
Es gibt ein Objekt:
scala.util.Properties
Hier finden Sie eine Sammlung von Methoden, mit denen Umgebungsinformationen abgerufen werden können, einschließlich
scala.util.Properties.envOrElse("HOME", "/myhome" )
Gleicher Weg:
scala> System.getenv("HOME")
res0: java.lang.String = /Users/dhg
Wenn die Konfigurationsbibliothek von Lightbend verwendet wird (standardmäßig in Play2 und Akka), können Sie diese verwenden
foo = "default value"
foo = ${?VAR_NAME}
Syntax zum Überschreiben von foo, wenn eine Umgebungsvariable VAR_NAME vorhanden ist. Weitere Informationen finden Sie unter https://github.com/typesafehub/config#optional-system-or-env-variable-overrides
Zum Drucken aller Umgebungsvariablen können Sie verwenden
System.getenv.forEach((name, value) => println(s"$name: $value"))
error: missing parameter type
auf den Argumenten, wenn Sie dies nur kopieren und einfügen.
(name: String, value: String)
ich die Parameter auf geändert habe , bekomme ich error: type mismatch; found : (String, String) => Unit required: java.util.function.BiConsumer[_ >: String, _ >: String]
.
sys.env.get("VARIABLE")
die IhnenOption[String]
einen Fehler gibt, als einen Fehler auszulösen, wenn diese Variable fehlt.