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.envpour 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.envc'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 typesur 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.