En Java, la lectura de variables de entorno se realiza con System.getenv()
.
¿Hay alguna manera de hacer esto en Scala?
En Java, la lectura de variables de entorno se realiza con System.getenv()
.
¿Hay alguna manera de hacer esto en Scala?
Respuestas:
Desde Scala 2.9 puede usar sys.env
para el mismo efecto:
scala> sys.env("HOME")
res0: String = /home/paradigmatic
Creo que es bueno usar la API Scala en lugar de Java. Actualmente hay varios proyectos para compilar Scala en otras plataformas que no sean JVM (.NET, javascript, nativo, etc.) La reducción de las dependencias en la API de Java hará que su código sea más portátil.
sys.env
es solo un Map
. Puedes hacer cualquier método que sea apropiado para ti.
sys.env.getOrElse("VARIABLE", "default value")
También fue útil en mi caso donde la variable de entorno puede no estar definida.
Hay un objeto:
scala.util.Properties
Esto tiene una colección de métodos que se pueden utilizar para obtener información del entorno, incluyendo
scala.util.Properties.envOrElse("HOME", "/myhome" )
Mismo camino:
scala> System.getenv("HOME")
res0: java.lang.String = /Users/dhg
Si se usa la biblioteca de configuración de Lightbend (por defecto en Play2 y Akka), puede usar
foo = "default value"
foo = ${?VAR_NAME}
sintaxis para anular foo si existe una variable de entorno VAR_NAME. Más detalles en https://github.com/typesafehub/config#optional-system-or-env-variable-overrides
Para imprimir todas las variables de entorno, puede usar
System.getenv.forEach((name, value) => println(s"$name: $value"))
error: missing parameter type
en los argumentos si solo copia y pega esto.
(name: String, value: String)
, estoy obteniendo error: type mismatch; found : (String, String) => Unit required: java.util.function.BiConsumer[_ >: String, _ >: String]
.
sys.env.get("VARIABLE")
que le daráOption[String]
un error en lugar de arrojar un error si falta esa variable.