Cómo leer las variables de entorno en Scala

En Java, la lectura de las variables de entorno se hace con System.getenv().

Hay una manera de hacer esto en la Scala?

InformationsquelleAutor summerbulb | 2012-04-03

6 Kommentare

  1. 203

    Desde Scala 2.9 se puede utilizar sys.env para el mismo efecto:

    scala> sys.env("HOME")
    res0: String = /home/paradigmatic

    Creo que es bueno utilizar el Scala API de Java. Actualmente existen varios proyectos para compilar Scala a otras plataformas de la JVM (.NET, javascript, nativo, etc.) La reducción de las dependencias en la API de Java, va a hacer su código más portable.

    • Es probablemente la mejor práctica para el uso de sys.env.get("VARIABLE") que le dará un Option[String] en vez de tirar un error si esa variable es la que falta.
    • Yo prefiero también, en la mayoría de los casos. Pero sys.env es sólo un Map. Usted puede cualquiera que sea el método adecuado para usted.
  2. 118

    No es un objeto:

    scala.util.Properties

    este tiene una colección de métodos que pueden utilizarse para obtener el entorno de información, incluyendo

    scala.util.Properties.envOrElse("HOME", "/myhome" )
    • También prefiero Propiedades. Permite recuperar Opcionales, y tiene nombres para utilizadas propiedades.
  3. 24

    Misma manera:

    scala> System.getenv("HOME")
    res0: java.lang.String = /Users/dhg
    • funciona, pero realmente no es la mejor opción
    • NOTA: no pasar por alto las otras respuestas son joyas!
    • se debe hacer usando Scala API de Java.
    • Ahora que yo uso Scala sobre una base diaria, me debe mover a la aceptada respuesta a @paradigmático de la respuesta. Utiliza Scala API y si se utiliza como se sugiere en los comentarios puede devolver una Opción.
  4. 5

    Utilizando directamente un defecto con getOrElse sobre el sys.env Mapa (val myenv: Map[String, String] = sys.env):

    sys.env.getOrElse(envVariable, defaultValue)

    Obtener el contenido de la envVariable o, si no existe, el defaultValue.

  5. 0

    Para imprimir todos variables de entorno, puede utilizar

    System.getenv.forEach((name, value) => println(s"$name: $value"))
    • error: missing parameter type en la args si usted acaba de copiar-pegar este.
    • Yo actualmente no tengo Scala instalado en mi máquina. Hizo usted averiguar lo que faltaba?
    • Después de cambiar los parámetros para (name: String, value: String), me estoy poniendo error: type mismatch; found : (String, String) => Unit required: java.util.function.BiConsumer[_ >: String, _ >: String].
    • Aquí hay algo que funciona, pero requiere de una importación: alvinalexander.com/scala/…

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea