Kotlin 1.7.20

Par:
fredericmazue

mer, 05/10/2022 - 11:44

JetBrains a publié la version 1.7.20 de son langage maison Kotlin. Dans cette version nous remarquons particulièrement l'arrivée d'un nouvel opérateur ainsi qu'une nouvelle fonctionnalité expérimentale, les classes inline génériques.

L'opérateur ..<

Kotline 1.7.20 introduit le nouvel opérateur ..<. Cet opérateur permet d'exprimer une plage de valeurs. Il agit comme la fonction until et vous aide à définir la plage ouverte.

Voici un exemple d'utilisation de l'opérateur v dans une expression ..< :

when (value) {
    in 0.0..<0.25 -> // first quarter
    in 0.25..<0.5 -> // second quarter
    in 0.5..<0.75 -> // third quarter
    in 0.75..1.0 ->  // last quarter  <- note closed range here
}

Pour utiliser l'opérateur ..<, activez l' option -language-version 1.8 du compilateur.

Les classes inline génériques

Les classes en ligne génériques sont à l'heure actuelle une fonctionnalité expérimentale qui peut être supprimée ou modifiée à tout moment.

Kotlin 1.7.20 permet au type sous-jacent des classes en ligne JVM d'être un paramètre de type. Le compilateur le mappe sur Any? ou, généralement, sur la limite supérieure du paramètre de type.

Considérez l'exemple suivant :

@JvmInline
value class UserId<T>(val value: T)

fun compute(s: UserId<String>) {} // compiler generates fun compute-<hashcode>(s: Any?)

La fonction accepte la classe inline comme paramètre. Le paramètre est mappé à la limite supérieure, pas à l'argument de type.

Pour activer cette fonctionnalité, utilisez l' option -language-version 1.8 du compilateur.

A remarquer aussi

Kotlin 1.7.20 impose des restrictions majeures sur l'utilisation de l'inférence de type de générateur qui pourraient affecter votre code. Ces restrictions s'appliquent au code contenant des fonctions lambda de générateur, où il est impossible de dériver le paramètre sans analyser le lambda lui-même. Le paramètre est utilisé comme argument. Désormais, le compilateur affichera toujours une erreur pour un tel code et vous demandera de spécifier explicitement le type.

Enfin, Kotlin 1.7.20 est livré avec le nouveau gestionnaire de mémoire Kotlin/Native activé par défaut.

Toutes les nouveautés de Kotlin 1.7.20 sont récapitulées dans la vidéo ci-dessous.