Ny Kotlin med when-sætning, der tjekker helligdagene
En ny udgave af JVM-sproget Kotlin har set dagens lys, og den er fuld af nyheder. Det skriver sprogets marketingchef Alina Grebenkina fra Jetbrains i et blogindlæg.
En ny sprogfacilitet er en when
-sætning, der holder styr på, at alle muligheder i en forseglet klasse er udtømt. En forseglet klasse er - lidt i stil med samme facilitet i de seneste Java-udgaver - en klasse, der udpeger sine mulige facetter.
Det er nemmest at forstå med et eksempel, hentet fra blogindlægget. Man kunne modellere forskellige måder at håndtere kontakter på, på denne facon:
sealed class Contact { data class PhoneCall(val number: String) : Contact() data class TextMessage(val number: String) : Contact() data class InstantMessage(val type: IMType, val user: String) : Contact() }
When-sætningen findes allerede i en mere begrænset version. Med den udvidede when-sætning sikres det, at der så at sige er malet i alle kroge - at alle muligheder i en forgrening er udtømt:
fun Rates.computeMessageCost(contact: Contact): Cost = when (contact) { // ERROR: 'when' expression must be exhaustive is Contact.PhoneCall -> phoneCallCost is Contact.TextMessage -> textMessageCost }
Java er et programmeringsprog med en tilhørende virtuel maskine (VM), som benyttes til at afvikle programmer kompileret til byte-kode, en slags virtuelle cpu-instruktioner. Andre sprog kan også kompileres til byte-kode, og denne verden omtales undertiden som JVM-platformen. Mange af disse sprog kan også benytte biblioteker skrevet i Java. Ud over Java og Kotlin byder platformen på mange andre sprog, såsom Scala, Groovy og Clojure.JVM-platformen
Hvis Contact-klassen udvides med en ny kontakt-mulighed senere, og man glemmer at håndtere den i forgreningen, får man en fejlmeddelelse.
Blandt andre nyheder er eksperimentel hukommelseshåndtering for Kotlin Native, der compiler programmer i sproget til systemkode, som eksekverbare filer.
Den nye hukommelsesstyring ophæver de eksisterende restriktioner for objektdeling mellem tråde og kræver ikke annotationer i koden for at undgå lækager.
I samme boldgade er det nu muligt at compile til Windows med Mingw-miljøet på alle platforme.
