ใน Java System.getenv()
อ่านตัวแปรสภาพแวดล้อมที่จะทำด้วย
มีวิธีการทำเช่นนี้ใน Scala หรือไม่?
ใน Java System.getenv()
อ่านตัวแปรสภาพแวดล้อมที่จะทำด้วย
มีวิธีการทำเช่นนี้ใน Scala หรือไม่?
คำตอบ:
ตั้งแต่ Scala 2.9 คุณสามารถใช้เอsys.env
ฟเฟกต์เดียวกันได้:
scala> sys.env("HOME")
res0: String = /home/paradigmatic
ฉันคิดว่าเป็นเรื่องดีที่จะใช้ Scala API แทน Java ขณะนี้มีหลายโครงการที่จะรวบรวม Scala ไปยังแพลตฟอร์มอื่นที่ไม่ใช่ JVM (. NET, javascript, native ฯลฯ ) การลดการพึ่งพา Java API จะทำให้โค้ดของคุณพกพาได้มากขึ้น
sys.env
Map
คุณสามารถใช้วิธีการใดก็ได้ที่เหมาะสมกับคุณ
sys.env.getOrElse("VARIABLE", "default value")
ก็มีประโยชน์ในกรณีของฉันที่อาจไม่ได้กำหนดตัวแปรสภาพแวดล้อม
มีวัตถุคือ:
scala.util.Properties
นี่เป็นชุดของวิธีการที่สามารถใช้เพื่อรับข้อมูลสภาพแวดล้อมรวมถึง
scala.util.Properties.envOrElse("HOME", "/myhome" )
วิธีการเดียวกัน:
scala> System.getenv("HOME")
res0: java.lang.String = /Users/dhg
ใช้โดยตรงเริ่มต้นที่มีgetOrElse
มากกว่าsys.env
แผนที่ ( val myenv: Map[String, String] = sys.env
):
sys.env.getOrElse(envVariable, defaultValue)
คุณจะได้รับเนื้อหาของหรือหากมันไม่ได้อยู่ที่envVariable
defaultValue
หากใช้ไลบรารีการกำหนดค่าของ Lightbend (โดยค่าเริ่มต้นใน Play2 และ Akka) คุณสามารถใช้งานได้
foo = "default value"
foo = ${?VAR_NAME}
ไวยากรณ์เพื่อแทนที่ foo หากมีตัวแปรสภาพแวดล้อม VAR_NAME อยู่ รายละเอียดเพิ่มเติมในhttps://github.com/typesafehub/config#optional-system-or-env-variable-overrides
หากต้องการพิมพ์ตัวแปรสภาพแวดล้อมทั้งหมดคุณสามารถใช้
System.getenv.forEach((name, value) => println(s"$name: $value"))
error: missing parameter type
บน args หากคุณเพิ่งคัดลอกวางนี้
(name: String, value: String)
error: type mismatch; found : (String, String) => Unit required: java.util.function.BiConsumer[_ >: String, _ >: String]
sys.env.get("VARIABLE")
ที่ดีกว่าซึ่งจะทำให้คุณOption[String]
มีข้อผิดพลาดมากกว่าหากเกิดข้อผิดพลาดหากตัวแปรนั้นหายไป