web-dev-qa-db-fra.com

Comment lire les variables d’environnement dans Scala

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

Y a-t-il un moyen de faire cela à Scala?

138
summerbulb

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.

207
paradigmatic

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" )
120
andy

De la même façon:

scala> System.getenv("HOME")
res0: Java.lang.String = /Users/dhg
24
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.

6
victe

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
jfuentes

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

System.getenv.forEach((name, value) => println(s"$name: $value"))
0
Matthias Braun