Di Jawa, variabel lingkungan membaca dilakukan dengan System.getenv()
.
Apakah ada cara untuk melakukan ini di Scala?
Di Jawa, variabel lingkungan membaca dilakukan dengan System.getenv()
.
Apakah ada cara untuk melakukan ini di Scala?
Jawaban:
Karena Scala 2.9 Anda dapat menggunakan sys.env
untuk efek yang sama:
scala> sys.env("HOME")
res0: String = /home/paradigmatic
Saya pikir lebih baik menggunakan Scala API daripada Java. Saat ini ada beberapa proyek untuk mengkompilasi Scala ke platform lain selain JVM (.NET, javascript, asli, dll.) Mengurangi dependensi pada Java API, akan membuat kode Anda lebih portabel.
sys.env
hanya a Map
. Anda dapat menggunakan metode apa pun yang sesuai untuk Anda.
sys.env.getOrElse("VARIABLE", "default value")
juga membantu dalam kasus saya di mana variabel lingkungan mungkin tidak didefinisikan.
Ada sebuah objek:
scala.util.Properties
ini memiliki kumpulan metode yang dapat digunakan untuk mendapatkan info lingkungan, termasuk
scala.util.Properties.envOrElse("HOME", "/myhome" )
Cara yang sama:
scala> System.getenv("HOME")
res0: java.lang.String = /Users/dhg
Jika pustaka konfigurasi Lightbend digunakan (secara default di Play2 dan Akka) maka Anda dapat menggunakannya
foo = "default value"
foo = ${?VAR_NAME}
sintaks untuk menimpa foo jika ada variabel lingkungan VAR_NAME. Lebih detail di https://github.com/typesafehub/config#optional-system-or-env-variable-overrides
Untuk mencetak semua variabel lingkungan, Anda dapat menggunakan
System.getenv.forEach((name, value) => println(s"$name: $value"))
error: missing parameter type
pada args jika Anda hanya menyalin-menempelkan ini.
(name: String, value: String)
, saya mengerti error: type mismatch; found : (String, String) => Unit required: java.util.function.BiConsumer[_ >: String, _ >: String]
.
sys.env.get("VARIABLE")
yang akan memberi AndaOption[String]
daripada melemparkan kesalahan jika variabel itu hilang.