Comment lire les variables D'environnement dans Scala

En Java, la lecture des variables d'environnement se fait avec System.getenv().

Est-il un moyen de le faire dans Scala?

118
demandé sur Matthias Braun 2012-04-03 20:13:48

5 réponses

Depuis Scala 2.9, vous pouvez utiliser sys.env pour le même effet:

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

Je pense qu'il est agréable d'utiliser L'API Scala au lieu de Java. Il existe actuellement plusieurs projets pour compiler Scala sur d'autres plates-formes que JVM (. net, javascript, native, etc.) Réduire les dépendances sur L'API Java rendra votre code plus portable.

185
répondu paradigmatic 2012-04-03 16:56:28

Il y a un objet:

scala.util.Properties

Cela a une collection de méthodes qui peuvent être utilisées pour obtenir des informations sur l'environnement, y compris

scala.util.Properties.envOrElse("HOME", "/myhome" )
106
répondu andy 2012-04-03 17:01:58

De la même manière:

scala> System.getenv("HOME")
res0: java.lang.String = /Users/dhg
23
répondu dhg 2012-04-03 16:15:22

Si la bibliothèque de configuration de Lightbend est utilisée (par défaut dans Play2 et Akka), vous pouvez utiliser

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

Syntaxe pour remplacer foo si une variable D'environnement VAR_NAME existe. Plus de détails dans https://github.com/typesafehub/config#optional-system-or-env-variable-overrides

4
répondu jfuentes 2016-07-23 22:30:23

Pour imprimer Toutes les variables d'environnement, vous pouvez utiliser

System.getenv.forEach((name, value) => println(s"$name: $value"))
0
répondu Matthias Braun 2017-05-25 13:37:10