Kotlin est un langage de programmation moderne qui compile en bytecode Java. C'est gratuit et open source, et promet de rendre le codage pour Android encore plus amusant.
Dans l'article précédent, vous avez appris sur les variables, les types simples, les tableaux, les commentaires et l'inférence de type dans Kotlin. Dans ce didacticiel, nous allons continuer à apprendre le langage en examinant la nullabilité, les boucles et les conditions dans Kotlin..
Si vous êtes un codeur Android, vous devez être tombé sur l'infâme NullPointerException
erreurs dans votre application. Cela se produit chaque fois que vous essayez d’appeler une méthode ou de lire une propriété d’une référence d’objet qui est nul
.
La bonne nouvelle est que Kotlin peut nous aider à éviter ce type d’erreur, car c’est un langage totalement sûr. Cela signifie que les variables ne peuvent pas avoir la valeur null sauf si vous déclarez explicitement que leur type est nullable. En d'autres termes, par défaut, les types ne peuvent pas être nuls. Voyons comment cette fonctionnalité de Kotlin peut nous aider à éviter les erreurs dans notre code.
nom de la valeur: String = null // ne sera pas compilé
Comme vous pouvez le voir ci-dessus, si nous assignons nul
au prénom
variable, le compilateur va se plaindre. Pour que le compilateur autorise l’affectation, déclarez le nom nullable en ajoutant ?
après le type.
nom de la valeur: String? = null // compilera name = "Chike" // la nouvelle valeur est "Chike"
Notez que si ?
est inséré après tout nom de type, nous avons explicitement indiqué au compilateur que la valeur du type peut stocker une référence d'objet ou peut être nul
-il est nul. Ici, nous l’avons fait avec le Chaîne
tapez, mais cela fonctionne de la même façon avec Int?
, Octet?
, Longue?
, Ma classe?
, etc.
?.
Apprenons-en plus sur le fonctionnement de la sécurité nulle à Kotlin avec un opérateur appelé opérateur d'appels sûrs. ?.
.
Nom var: String? = null print (name.length) // ne sera pas compilé
Le code ci-dessus ne sera pas compilé car Kotlin est un langage null-safe. La variable prénom
est assigné la valeur nul
. Maintenant, invoquant la propriété longueur
sur cette variable déclencherait une NullPointerException
erreur en Java. Mais le compilateur Kotlin ne permet pas l’invocation de cette propriété car la variable pourrait être nul
. Le compilateur ne nous permettra pas de faire quelque chose qui pourrait générer une NullPointerException
!
val v: String? = null print (v? .length) // compilera et imprimera "null"
Maintenant, en ajoutant l'opérateur d'appel sécurisé ?.
à la variable avant d'appeler la propriété, nous avons explicitement demandé au compilateur d'appeler la propriété uniquement si la valeur n'est pas nul
. Si la valeur est nul
, le compilateur utilisera la chaîne "nul"
comme la valeur pour nous. Cela fonctionne aussi pour les méthodes et pas seulement les propriétés.
Lorsque vous appelez une méthode de type nullable, le type de retour sera également nullable. Ainsi, par exemple, le type de retour du v? .longueur
expression quand v
est nullable sera Int?
.
val v: String? = null val len: Int? = v? .length print (len) // compilera et imprimera "null"
Pour contourner la vérification de la nullité par le compilateur Kotlin, nous pouvons remplacer le ?.
opérateur avec !!.
. Ceci n'est pas recommandé, cependant, en raison de la forte probabilité d'obtenir NullPointerException
erreurs si utilisé.
val v: String? = null val len: Int? = v !!. length print (len) // déclenche une erreur NullPointerException
?:
Cet opérateur ?:
s'appelle l'opérateur Elvis (car sa forme ressemble à celle de la tête d'Elvis). Il est utilisé pour fournir une valeur alternative à la variable si elle est nul
.
val username = null val name: String = username?: "No name" print (name) // va compiler et afficher "No name"
Ici, le compilateur a attribué la chaîne "Sans nom"
à la variable prénom
, parce que le premier nom d'utilisateur de valeur est nul
. Si la première valeur n'était pas nul
, alors cette valeur serait assignée à la variable à la place.
Kotlin a des boucles while, do-while et for.
tandis que
BoucleUne instruction de répétition nous permet de spécifier que le code doit répéter une action tant qu'une condition reste vraie.
Donc, à Kotlin, en utilisant le tandis que
la boucle est la même que dans d'autres langages tels que Java.
while (condition) // exécuter le code ici While (fuel> 5) driveMeAroundLagos ()
Tant que la condition est vraie, le code à l'intérieur des accolades ou du corps de la boucle sera exécuté. Si la condition est fausse, le code ne sera pas exécuté. Dans notre exemple ci-dessus, lorsque la variable de carburant devient inférieure à 5 litres, la condition devient fausse et la boucle se termine. En d'autres termes, driveMeAroundLagos ()
l'exécution de la méthode s'arrête.
faire pendant
BoucleKotlin a aussi le faire pendant
construction de boucle.
faire // exécuter le code ici while (condition)
Ceci est similaire à la tandis que
déclaration. Dans la boucle while, le programme teste la condition de la boucle au début de la boucle avant d'exécuter le corps de la boucle. Si la condition est fausse, le corps n'est pas exécuté. Mais le faire pendant
loop teste la condition après l'exécution du corps de la boucle. Cela signifie que le corps est exécuté au moins une fois.
pour
BoucleUNE pour
boucle est une instruction de répétition qui nous permet d'itérer sur des objets lorsqu'une condition donnée est vraie.
for (valeur dans la plage) // code d'exécution
À Kotlin, le pour
la construction de boucle fonctionne avec l'itération sur des plages, des collections ou d'autres iterables (je vous en expliquerai plus dans le prochain post). Les boucles For fonctionnent avec le dans
opérateur, qui sert à déterminer si une valeur est présente dans une plage donnée.
pour (a in 1… 5) print ("$ a") // imprimera 1 2 3 4 5
Dans le code ci-dessus, nous parcourons une plage fermée de 1 à 5 et imprimons chaque valeur dans la plage..
Nous pouvons utiliser le avecIndex ()
fonction ou la des indices
propriété sur un tableau à parcourir sur un tableau où nous avons besoin de l'index pour chaque élément.
avecIndex ()
Une fonctionNous pouvons parcourir un tableau pour accéder à l'index de chaque élément en appelant le avecIndex ()
fonctionner sur le tableau, parce que le avecIndex ()
la fonction retourne un iterable de Valeur indexée
tapez pour chaque élément. Cela nous permet d'accéder à la fois à l'index et à la valeur de chaque élément..
val numbersArray = intArrayOf (1,2,3,4,5) pour ((index, valeur) dans numbersArray.withIndex ()) print ("$ valeur d'index index est $ valeur \ n")
Le code ci-dessus imprimera le résultat ci-dessous:
0 valeur d'index est 1 1 valeur d'index est 2 2 valeur d'index est 3 3 valeur d'index est 4 4 valeur d'index est 5
des indices
PropriétéDe plus, nous pouvons utiliser le des indices
propriété sur le tableau. Cela renverra uniquement la plage d'index valides du tableau..
val numbers1 = intArrayOf (1,2,3,4,5) pour (index in numbers1.indices) print ("La valeur de l'index $ index est $ numbers1 [index] \ n")
Le code ci-dessus produira le même résultat que l'exemple précédent. Vous pouvez également voir ici que nous pouvons utiliser l'index pour accéder à un élément de tableau, de la même manière que d'autres langages de programmation tels que Java..
Kotlin a trois types d’énoncés de condition: le si
, sinon
, et quand
des déclarations.
si
DéclarationUn si
instruction exécute du code si une condition est vraie ou l'ignore simplement si la condition est fausse. Rien de spécial ici: si
Les instructions fonctionnent de la même manière que dans la plupart des autres langages de programmation, y compris Java..
val number = 20 si (number% 2 == 0) print ("$ number est divisible par 2") // 20 est divisible par 2
Nous pouvons également vérifier si une variable est d'un type particulier en utilisant le est
mot-clé.
if (number is Int) print ("$ number est un entier")
sinon
Déclarationle sinon
effectue une action si la condition est vraie et effectue une action différente si la condition est fausse.
nombre val = 13 si (nombre% 2 == 0) print ("le nombre $ est divisible par 2") else print ("le nombre $ n'est pas divisible par 2") // 13 n'est pas divisible par 2
Une caractéristique majeure qui distingue le sinon
L’instruction en Kotlin à partir d’autres langages de programmation tels que Java permet d’affecter une variable à partir de la valeur renvoyée sinon
déclaration. Ceci est possible car un sinon
déclaration peut être utilisée non seulement comme une déclaration, mais aussi comme une expression dans Kotlin.
val number = 13 val result = if (number% 2 == 0) "$ number est divisible par 2" else "$ number n'est pas divisible par 2" print (result) // 13 n'est pas divisible par 2
Dans le code ci-dessus, nous avons attribué le résultat
variable avec un Chaîne
objet basé sur l'état du sinon
déclaration. Sachez que cela ne renvoie que la dernière instruction d’un bloc de conditions particulier et qu’il est également impossible d’utiliser un si
sans un autre
comme une expression.
val result = if (number% 2 == 0) "Divisible par 2" "Le numéro est $ nombre" // seule cette chaîne est renvoyée si elle a été exécutée else "Non divisible par 2" "Le numéro est $ nombre"
quand
ExpressionKotlin a présenté le quand
construire en remplacement du familier commutateur
déclaration que nous avons dans différents langages de programmation tels que C ++, Java, etc.. quand
est plus concis et possède des fonctionnalités plus puissantes que le commutateur
déclaration que vous connaissez peut-être.
le quand
instruction effectue différentes actions en fonction des valeurs possibles d'une constante de type Int
, Chaîne
, Octet
, Court
, ou tout autre objet.
fun guessTheNumber (number: Int) when (number) 1 -> println ("nombre est 1") 2 -> println ("nombre est 2") 3 -> println ("nombre est 3") sinon -> println ("le nombre n'est ni 1, 2 ni 3")
Dans le code ci-dessus, nous avons passé la fonction suppose que le numéro ()
un paramètre numérique (nous discuterons des fonctions dans Kotlin dans un post ultérieur). le quand
expression vérifie ensuite si l’une des branches correspond à la valeur de nombre
puis exécute l'action sur cette branche. Si aucune des branches était un match, le autre
la branche est exécutée.
Une autre variante du quand
expression ne nécessite aucun argument, comme dans l'exemple ci-dessous.
amusementTheNumber (number: Int) when number == 1 -> println ("nombre est 1") nombre == 2 -> println ("nombre est 2") nombre == 3 -> println ("nombre est 3 ") else -> println (" le nombre n'est ni 1, 2 ni 3 ")
Si nous voulons exécuter plus d’une action sur une branche, nous devons envelopper les actions entre accolades. .
val nombre = 2 quand (nombre) 1 -> println ("nombre est 1") 2 -> // bloc de code exécuté println ("nombre est 2") println ("c'est un nombre pair") 3 -> println ("number is 3")
De plus, nous pouvons combiner des valeurs de test dans une seule branche.
val nombre = 2 quand (nombre) 1, 2 -> println ("nombre est soit 1 ou 2") // nombre est 1 ou 2 3 -> println ("nombre est 3")
Ici, la première branche est exécutée car nous testons une valeur de 1 ou 2.
Dans ce tutoriel, vous avez découvert la nullité, les boucles et les conditions dans le langage de programmation Kotlin. Dans le prochain didacticiel de la série Kotlin From Scratch, vous découvrirez les API de gammes et de collections de Kotlin. À bientôt!
Pour en savoir plus sur la langue Kotlin, je vous recommande de consulter la documentation Kotlin. Ou consultez certains de nos autres tutoriels sur Kotlin ici sur Envato Tuts+!