Hoe lees ik een omgevingsvariabele in Kotlin?

Ik wil graag een bepaalde waarde halen uit een omgevingsvariabele in mijn Kotlin-app, maar ik kan niets vinden over het lezen van omgevingsvariabelen in de kernbibliothekendocumentatie.

Ik zou verwachten dat het onder kotlin.systemmaar er is echt niet zo veel.


Antwoord 1, autoriteit 100%

Het is heel eenvoudig om een ​​omgevingswaarde te krijgen als deze bestaat of een standaardwaarde door de elvis-operator in kotlin te gebruiken:

var envVar: String = System.getenv("varname") ?: "default_value"

Antwoord 2, autoriteit 29%

Je zou altijd deze benadering kunnen volgen:

val envVar : String? = System.getenv("varname")

Hoewel, om eerlijk te zijn, dit voelt niet bijzonder idiomatisch aan, aangezien je gebruikmaakt van Java’s System-klasse, niet die van Kotlin.


Antwoord 3, autoriteit 6%

Mijn favoriete oneliner is (bijgewerkt na opmerking van @Adam Millerchip):

val myEnv = System.getenv("MY_ENV").takeUnless { it.isNullOrEmpty() } ?: "default_value"

Oude:
val myEnv = if (System.getenv("MY_ENV").isNullOrEmpty()) "default_value" else System.getenv("MY_ENV")


Antwoord 4, autoriteit 4%

U kunt de kotlin-extensie Konfig gebruiken

Konfig – Een type veilige configuratie-API voor Kotlin

Konfig biedt een uitbreidbare, typeveilige API voor configuratie-eigenschappen verzameld uit meerdere bronnen – ingebouwde bronnen, systeemeigenschappen, eigenschappenbestanden, omgevingsvariabelen, opdrachtregelargumenten, enz.

Bijvoorbeeld: Key("http.port", intType)

Other episodes