En Java, las variables de entorno de lectura se realizan con System.getenv()
.Cómo leer variables de entorno en Scala
¿Hay alguna manera de hacer esto en Scala?
En Java, las variables de entorno de lectura se realizan con System.getenv()
.Cómo leer variables de entorno en Scala
¿Hay alguna manera de hacer esto en Scala?
Desde Scala 2.9 se puede utilizar sys.env
para el mismo efecto:
scala> sys.env("HOME")
res0: String = /home/paradigmatic
Creo que es agradable de usar la API de Scala en lugar de Java. Actualmente hay varios proyectos para compilar Scala en otras plataformas aparte de 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.
misma manera:
scala> System.getenv("HOME")
res0: java.lang.String = /Users/dhg
funciona, pero no es realmente la mejor opción – iwein
NOTA: No pase por alto las otras respuestas - son gemas ! –
debe hacerse utilizando la API de Scala en lugar de Java. –
hay un objeto:
scala.util.Properties
esto tiene una colección de métodos que se pueden utilizar para obtener información ambiente, incluyendo
scala.util.Properties.envOrElse("HOME", "/myhome")
También preferiría Propiedades. Permite recuperar Opcionales, y tiene nombres para propiedades comúnmente usadas. – ppopoff
Si se utiliza la biblioteca de configuración de Lightbend (por defecto en Play2 y Akka), puede utilizar
foo = "default value" foo = ${?VAR_NAME}
sintaxis para reemplazar a 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 todos variables de entorno, puede utilizar
System.getenv.forEach((name, value) => println(s"$name: $value"))
Probablemente sea una mejor práctica usar 'sys.env.get (" VARIABLE ")' que le dará una 'Opción [String]' en lugar de arrojar un error si esa variable falta. –
@CristianVrabie Yo también lo preferiría, en la mayoría de los casos. Pero 'sys.env' es solo un' Mapa'. Puede cualquier método que sea apropiado para usted. – paradigmatic