En Java, la lecture des variables d'environnement se fait avec System.getenv()
.
Y a-t-il un moyen de faire cela dans Scala?
En Java, la lecture des variables d'environnement se fait avec System.getenv()
.
Y a-t-il un moyen de faire cela dans Scala?
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 que c'est bien d'utiliser l'API Scala au lieu de Java. Il existe actuellement plusieurs projets pour compiler Scala vers d'autres plates-formes que JVM (.NET, javascript, natif, etc.) La réduction des dépendances sur l'API Java rendra votre code plus portable.
sys.env
c'est juste un Map
. Vous pouvez utiliser la méthode qui vous convient.
sys.env.getOrElse("VARIABLE", "default value")
était également utile dans mon cas où la variable d'environnement peut ne pas être définie.
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" )
De la même façon:
scala> System.getenv("HOME")
res0: java.lang.String = /Users/dhg
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 sur https://github.com/typesafehub/config#optional-system-or-env-variable-overrides
Pour imprimer toutes les variables d'environnement, vous pouvez utiliser
System.getenv.forEach((name, value) => println(s"$name: $value"))
error: missing parameter type
sur les arguments si vous venez de copier-coller ceci.
(name: String, value: String)
, je reçois error: type mismatch; found : (String, String) => Unit required: java.util.function.BiConsumer[_ >: String, _ >: String]
.
sys.env.get("VARIABLE")
ce qui vous donneraOption[String]
une erreur plutôt que de lancer une erreur si cette variable est manquante.