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)