In Java, la lettura delle variabili di ambiente viene eseguita con System.getenv()
.
C'è un modo per farlo a Scala?
In Java, la lettura delle variabili di ambiente viene eseguita con System.getenv()
.
C'è un modo per farlo a Scala?
Risposte:
Da Scala 2.9 puoi usare sys.env
per lo stesso effetto:
scala> sys.env("HOME")
res0: String = /home/paradigmatic
Penso che sia bello usare l'API Scala invece di Java. Attualmente ci sono diversi progetti per compilare Scala su piattaforme diverse da JVM (.NET, javascript, nativo, ecc.) La riduzione delle dipendenze dall'API Java renderà il tuo codice più portabile.
sys.env
è solo un Map
. Puoi qualunque metodo sia adatto a te.
sys.env.getOrElse("VARIABLE", "default value")
è stato utile anche nel mio caso in cui la variabile d'ambiente non può essere definita.
C'è un oggetto:
scala.util.Properties
questo ha una raccolta di metodi che possono essere usati per ottenere informazioni sull'ambiente, incluso
scala.util.Properties.envOrElse("HOME", "/myhome" )
Stessa strada:
scala> System.getenv("HOME")
res0: java.lang.String = /Users/dhg
Se viene utilizzata la libreria di configurazione di Lightbend (per impostazione predefinita in Play2 e Akka), è possibile utilizzare
foo = "default value"
foo = ${?VAR_NAME}
sintassi per sovrascrivere foo se esiste una variabile d'ambiente VAR_NAME. Maggiori dettagli in https://github.com/typesafehub/config#optional-system-or-env-variable-overrides
Per stampare tutte le variabili di ambiente, è possibile utilizzare
System.getenv.forEach((name, value) => println(s"$name: $value"))
error: missing parameter type
sull'args se lo copia e incolla.
(name: String, value: String)
, sto ottenendo error: type mismatch; found : (String, String) => Unit required: java.util.function.BiConsumer[_ >: String, _ >: String]
.
sys.env.get("VARIABLE")
che ti daràOption[String]
un errore piuttosto che generare un errore se manca quella variabile.