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 Comentarios

  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/…

Dejar respuesta

Please enter your comment!
Please enter your name here