Ny Kotlin med when-sætning, der tjekker helligdagene

Illustration: Bigstock/REDPIXEL.PL
Version 1.6 af Jetbrains' sprog kommer med nye sprogfaciliteter og hukommelseshåndtering til native.

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
   }

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.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (0)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Log ind eller Opret konto for at kommentere