Kotlin 1.6 a été officiellement publié par Jetbrains la semaine dernière avec des « when » exhaustifs désormais stables ainsi qu’un nouveau gestionnaire de mémoire et un plugin de mesure de couverture de code appelé Kover.

Upway fait un tour d’horizon des nouvelles possibilités apportées par la mise à jour de Kotlin

Les nouvelles fonctionnalités du langage Kotlin 1.6

  • Les « when » scellés désormais stables

Fonctionnalité longtemps attendue, le compilateur Kotlin vous prévient désormais lorsque votre fonction « when » n’est pas complète, c’est à dire lorsque tous les cas possibles ne sont pas traités. Bien que le code pourra être compilé, le message suivant sera affiché :

 

Non-exhaustive 'when' statements on sealed class/interface will be prohibited in 1.7. Add an 'is InstantMessage' branch or 'else' branch instead.

 

Ce qui vous permettra d’identifier l’erreur plus rapidement et de gagner du temps ! Par ailleurs si vous ajoutez encore une catégorie différente soumise au ‘when’, le compilateur fera en sorte de vous rappeler de la rajouter dans la fonction.

Aujourd’hui, la compilation du code est toujours possible mais à partir de Kotlin 1.7, le compilateur devrait s’arrêter avec un message d’erreur.

  • Les fonctions de suspension comme supertypes

Kotlin 1.6 stabilise la prise en charge de l’implémentation des types fonctionnels suspend en tant que super interfaces. C’était l’une des pièces manquantes dans la conception des coroutines de Kotlin.

Lorsque vous concevez des API Kotlin, c’est une obligation idiomatique d’accepter des types fonctionnels lorsque vous devez personnaliser le comportement de diverses fonctions de bibliothèque. Par exemple, l’APIkotlinx.coroutines  a une fonction membre dans son interface Job qui ressemble à ceci :

**fun** invokeOnCompletion(handler: () -> Unit)

Vous pouvez facilement utiliser cette fonction avec des lambdas comme *invokeOnCompletion* **{** *doSomething*() **}**. Si vous avez une classe avec laquelle vous souhaitez gérer la complétion, vous pouvez rationaliser et optimiser votre code en implémentant le type fonctionnel () -> Unit directement dans votre classe sans créer de lambda supplémentaire :

**class** MyCompletionHandler : () -> Unit {

**override** **fun** invoke() { doSomething() }

}

  • La conversion en fonction de suspension

Kotlin 1.6 stabilise la conversion des fonctions de type régulière à des fonctions de suspension. Aujourd’hui, vous pouvez convertir n’importe quelle expression d’un type fonctionnel régulier approprié où la suspension est attendue en tant que paramètre. Le compilateur effectuera une conversion automatiquement. convertir toute

Cela corrige une petite mais gênante incohérence dans l’interaction entre les fonctions régulières et suspendues dans Kotlin.

 

Kotlin/Native

 

Encore expérimentale, cette fonctionnalité permet une réelle expérience de développement en multiplateformes. Le nouveau gestionnaire de mémoire lève les restrictions existantes sur le partage d’objets entre les threads et fournit des primitives de programmation simultanée totalement sans fuite qui sont sûres et ne nécessitent aucune gestion ou annotations spéciales de la part du développeur.

Kover

 

Depuis la première publication de Kotlin, la mesure précise de couverture de code a toujours été un challenge. Des outils fonctionnent avec Kotlin mais ne sont malheureusement pas totalement intégrée avec Gradle et les projets multiplateformes. Kover est encore dans son stade expérimental mais il peut d’ors et déjà mesurer la couverture de code construit avec Kotlin et JVM compiler.

La Mascotte Kotlin

Vous êtes tombés amoureux de ce petit robot qui vous a présenté Kover ? Vous pouvez lui donner un nom !

Jetbrains nous a donné les éléments suivant pour vous aider : 

  •  Dynamic, motivé, et aventureux
  • Rationnel et pratique
  • Peut être un peu enfantin
  • Ouvert d’esprit et un peu branché
  • Est un érudit, intelligent, et curieux qui aime résoudre les problèmes !

Pour lui donner un nom, il existe un formulaire à remplir 🙂

+ de 150 missions sur Upway