En Java, la lecture des variables d’environnement se fait avec System.getenv()
.
Y a-t-il un moyen de faire cela à Scala?
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 à la place de Java. Il existe actuellement plusieurs projets à compiler Scala sur d’autres plates-formes que la JVM (.NET, javascript, native, etc.) Réduire les dépendances sur Java, rendra votre code plus portable.
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
Utiliser directement un défaut avec getOrElse
sur le sys.env
Carte (val myenv: Map[String, String] = sys.env
):
sys.env.getOrElse(envVariable, defaultValue)
Vous obtenez le contenu du envVariable
ou, s'il n'existe pas, du defaultValue
.
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
Pour imprimer les variables d'environnement toutes, vous pouvez utiliser
System.getenv.forEach((name, value) => println(s"$name: $value"))