Depuis que Apple a publié le langage de programmation Swift pour iOS, de nombreux développeurs Android ont souhaité un langage similaire pour le développement Android. Si vous êtes un de ces développeurs, vous allez adorer Kotlin, un langage JVM remarquablement similaire à Swift..
Kotlin est un langage à typage statique, développé par JetBrains, dont la syntaxe est plus expressive et concise que celle de Java. Avec des fonctionnalités telles que les fonctions d'ordre supérieur, les expressions lambda, la surcharge d'opérateurs, les modèles de chaîne, etc., Kotlin a bien plus à offrir que Java. Comme Java et Kotlin sont hautement interopérables, ils peuvent être utilisés ensemble dans le même projet..
Si vous êtes un programmeur compétent en Java, vous pourrez apprendre le kotlin très rapidement. Dans ce tutoriel, je vais vous montrer comment utiliser les constructions les plus fréquemment utilisées par Kotlin..
Pour suivre avec moi, vous aurez besoin de:
Pour créer une classe dans Kotlin, vous devez utiliser le classe
mot-clé. Par exemple, voici comment créer une classe vide appelée La personne:
"java class Person
"
Une classe a généralement des propriétés et des fonctions membres (également appelées méthodes). Ajoutons deux propriétés à la La personne
classe, prénom de type Chaîne
et âge de type Int
.
java nom var: String = "" âge: Int = 0
Comme vous pouvez le constater, la syntaxe de création des variables est légèrement différente de celle de Java. Pour créer une variable dans Kotlin, vous devez utiliser le var
mot-clé. Cependant, si vous voulez que votre variable soit une variable en lecture seule / assign-once, utilisez la commande val
mot clé à la place.
Par souci de sécurité nulle, Kotlin fait également une distinction entre les variables pouvant être nul
et des variables qui ne peuvent jamais être nul
. Dans notre exemple précédent, les deux variables prénom
et âge
ne peut jamais être nul
. S'ils sont nuls, le compilateur va générer une erreur.
Pour créer une variable pouvant contenir nul
, vous devez ajouter un ?
après le type de la variable. Par exemple:
java var college: String? = null
Maintenant que nous avons une classe, en créer une instance est simple:
java var jake = Personne ()
Non, Kotlin n'a pas le Nouveau
mot-clé. Une fois que l'instance a été créée, vous pouvez accéder à ses propriétés de la même manière qu'en Java:
java jake.name = "Jake Hill" jake.age = 24 jake.college = "Stephen's College"
Initialiser les propriétés individuelles de notre instance comme nous venons de le faire n'est pas une bonne pratique de codage. Une meilleure façon de faire serait d'utiliser un constructeur. La syntaxe de Kotlin pour créer un tel constructeur est très compacte:
"java class Person (nom var: String, âge var: Int, var college: String?)
"
En fait, si vous n'avez rien d'autre à ajouter à votre classe, vous n'avez pas besoin des accolades. Le code suivant fonctionne très bien:
"java class Person (nom var: String, âge var: Int, var college: String?)
var jake = Person («Jake Hill», 24 ans, «Stephen's College») "
Vous comprenez peut-être déjà qu'il est impossible d'ajouter du code personnalisé à ce constructeur. Ce constructeur, qui fait partie de l'en-tête de la classe, s'appelle le constructeur principal..
Pour ajouter plus de constructeurs à votre classe, appelés constructeurs secondaires, vous devez utiliser le constructeur
mot-clé. Les constructeurs secondaires doivent déléguer au constructeur principal en utilisant le ce
mot-clé. Ajoutons à notre classe un constructeur secondaire qui initialise la valeur d'une propriété nommée email:
"java class Person (nom var: String, âge var: Int, var college: String?)
var email: String = "" constructeur (nom: String, âge: Int, collège: String ?, email: String): this (nom, âge, collège) this.email = email "
Pour créer une instance à l'aide du constructeur secondaire, vous écrivez quelque chose comme ceci:
java var jake = Person ("Jake Hill", 24 ans, "Stephen's College", "[email protected]")
En Kotlin, les fonctions sont créées à l'aide du amusement
mot-clé. Ajoutons une fonction membre simple nommée isEligibleToVote qui retourne un Booléen
valeur:
"java fun isEligibleToVote (): Boolean // Si l'âge est supérieur ou égal à 18 // retourne la valeur true
âge de retour> = 18 "
Notez que le type de la valeur de retour est indiqué à la fin de l'en-tête de la fonction. Vous pouvez appeler cette méthode de la même manière qu'en Java:
java jake.isEligibleToVote ()
Kotlin vous permet d'étendre une classe en lui ajoutant des fonctions supplémentaires sans modifier sa définition d'origine. Ces fonctions sont appelées extensions. Les noms de ces fonctions doivent être précédés des noms des classes qu’elles étendent..
Par exemple, pour ajouter une extension appelée isTeenager au La personne
classe, vous écrivez le code suivant en dehors de la classe:
"java fun Person.isTeenager (): Boolean
// Si l'âge se situe dans la plage // 13-19, l'âge de retour réel est indiqué dans 13… 19 "
Cette fonctionnalité est particulièrement utile lorsque vous souhaitez étendre des classes qui n'appartiennent pas à la base de code de votre projet. Par exemple, l'extrait de code suivant ajoute une extension contientEspaces au Chaîne
classe:
java fun String.containsSpaces (): Boolean return this.indexOf ("")! = - 1
Il est important de garder à l'esprit les éléments suivants lors de la création d'une classe dérivée:
:
au lieu de Java s'étend
mot-clé.ouvrir
annotation.Créons une classe nommée Employé qui dérive de La personne
:
"java open class Person (nom var: String, âge var: Int, collège var: String?) …
employé de classe (nom: String, âge: Int, collège: String ?, société var: String): Personne (nom, âge, collège)
"
En Kotlin, vous devez indiquer explicitement qu’une fonction membre peut être remplacée à l’aide de la touche ouvrir
annotation dans l'en-tête de la méthode dans la classe de base. Dans la classe dérivée, les fonctions ouvertes peuvent être remplacées à l'aide de la commande passer outre
annotation.
Par exemple, pour remplacer le isEligibleToVote
méthode, vous ajoutez l'extrait de code suivant à la Employé
classe:
java override fun isEligibleToVote (): Boolean // Retourne toujours vrai retourne vrai
Kotlin ne vous permet pas de créer des méthodes statiques. Cependant, cela vous permet de créer des fonctions au niveau paquet qui n'appartiennent à aucune classe..
le principale
méthode est peut-être la méthode statique la plus connue. Si vous voulez ajouter le principale
méthode à un paquet nommé com.tutsplus.code.tutorial, alors votre code ressemblerait à ceci:
"package java com.tutsplus.code.tutorial
amusant principal (args: Array
"
Vous avez déjà appris à créer des fonctions simples dans les exemples précédents. La syntaxe utilisée pour créer ces fonctions était très similaire à celle de Java. Kotlin, cependant, vous permet de faire beaucoup plus avec les fonctions.
Si une fonction renvoie la valeur d’une seule expression, vous pouvez utiliser le =
opérateur après l'en-tête de la fonction suivi de l'expression pour définir la fonction.
Par exemple, pour ajouter une méthode à la La personne
classe qui retourne vrai
si la personne est un octogénaire, vous écrivez:
java fun isOctogenarian (): Boolean = age in 80… 89
Comme vous pouvez le constater, cette syntaxe abrégée est plus compacte et lisible..
Les fonctions d'ordre supérieur sont des fonctions qui peuvent renvoyer des fonctions ou accepter des fonctions en tant que paramètres. Une expression lambda, par contre, est juste une fonction qui n’a pas de nom. Habituellement, les expressions lambda et les fonctions d'ordre supérieur sont utilisées ensemble.
Prenons l'exemple suivant qui illustre la syntaxe d'une expression lambda:
java x, y -> x + y
Ceci est une expression lambda simple qui prend deux paramètres, X
et y
, et retourne leur somme. Comme vous l’auriez peut-être deviné, les paramètres de la fonction sont listés avant la ->
l'opérateur et le corps de la fonction commence après la ->
opérateur. Cette expression lambda peut être affectée à une variable et utilisée comme suit:
java val sumLambda: (Int, Int) -> Int = x, y -> x + y val actualSum = sumLambda (3,4)
Notez que le type de la variable qui contient l'expression lambda spécifie les types de ses paramètres et sa valeur de retour..
La création d'une fonction d'ordre supérieur pouvant accepter l'expression lambda ci-dessus en tant que paramètre est tout aussi simple. Par exemple, pour créer une fonction qui double le résultat de l'expression lambda, vous pouvez écrire:
java fun doubleTheResult (x: Int, y: Int, f: (Int, Int) -> Int): Int return f (x, y) * 2
Vous pouvez appeler cette fonction comme suit:
java val result1 = doubleTheResult (3, 4, sumLambda)
Alternativement, vous pouvez passer l'expression lambda directement à la fonction d'ordre supérieur:
java val result2 = doubleTheResult (3, 4, x, y -> x + y)
Les expressions lambda sont souvent utilisées avec des tableaux. Par exemple, considérons le tableau suivant de Int
valeurs:
java val numbers: Array
Si vous voulez mettre en carré la valeur de chaque élément du tableau, vous pouvez utiliser le carte
fonction avec une expression lambda comme suit:
"java val squaredNumbers = numbers.map (x -> x * x)
// Le résultat sera un nouveau tableau contenant // 1, 4, 9, 16, 25 "
Les expressions de plage sont très fréquemment utilisées dans Kotlin. Vous les avez déjà utilisés lors de la création du isTeenager
et isOctogenarian
les méthodes.
Pour créer une plage, tout ce dont vous avez besoin est la …
opérateur.
"java val r1 = 1… 5
// Cette plage contient le nombre 1, 2, 3, 4, 5 "
Pour créer une plage dans l’ordre décroissant, utilisez la commande vers le bas
fonction à la place.
"java val r2 = 5 downTo 1
// Cette plage contient le nombre 5, 4, 3, 2, 1 "
Si vous ne voulez pas que l'étape soit 1, vous pouvez spécifier une valeur personnalisée en utilisant le étape
une fonction.
"java val r3 = 5 downTo 1 step 2
// Cette plage contient le nombre 5, 3, 1 "
Vous verrez plus d'expressions de plage plus loin dans ce tutoriel..
si
À Kotlin, si
est une expression qui renvoie des valeurs différentes selon que la condition a été remplie ou non. L'exemple suivant illustre comment cela fonctionne.
"java var age = 20 val isEligibleToVote = si (age> 18)" Oui "sinon" Non "
// isEligibleToVote sera désormais défini sur "Oui" "
quand
le quand
expression est équivalente à Java commutateur
. Cependant, il est beaucoup plus polyvalent. Par exemple, considérons l'exemple suivant.
"java val age = 17
val typeOfPerson = quand (âge) 0 -> “Nouveau-né” dans 1… 12 -> “Enfant” dans 13… 19 -> “Adolescent” autre -> “Adulte”
// typeOfPerson va maintenant être réglé sur “Teenager” "
Comme vous pouvez le voir, quand
peut non seulement prendre des valeurs simples mais aussi des expressions en tant que ses conditions.
pour… dans
À Kotlin, vous pouvez utiliser le pour… dans
boucle pour parcourir des tableaux, des collections et tout ce qui fournit un itérateur. Sa syntaxe est presque identique à celle de Java, à l’exception de l’utilisation de la dans
opérateur au lieu de Java :
opérateur. L’exemple suivant montre comment parcourir en boucle un tableau de Chaîne
objets.
"java val names = arrayOf (“ Jake ”,“ Jill ”,“ Ashley ”,“ Bill ”)
pour (nom dans les noms) println (nom) "
À l'aide d'expressions de plage, vous pouvez faire en sorte que cette boucle se comporte comme un style C traditionnel., pour
boucle.
"java pour (i in 0… 9) println (i)
// se comporte exactement comme // pour (int i = 0; i<10;i++)"
tandis que
et faire pendant
La syntaxe de tandis que
et faire pendant
Les boucles en Kotlin sont identiques à la syntaxe utilisée en Java. Par exemple, le code Kotlin suivant passe en boucle sur un tableau de Chaîne
objets utilisant un tandis que
boucle:
"java val names = arrayOf (“ Jake ”,“ Jill ”,“ Ashley ”,“ Bill ”) var i = names.size ()
tandis que (i> 0) println (noms [-i]) "
Kotlin vous permet d’incorporer des variables et des expressions dans des chaînes en les enveloppant dans une paire d’accolades, précédées du préfixe $
symbole. Par exemple:
"java val name =" Bob "println (" Mon nom est $ name ") // Imprime" Mon nom est Bob "
val a = 10 val b = 20 println (“La somme est $ a + b” ") // Affiche« La somme est 30 ""
Dans ce tutoriel, vous avez appris les bases du langage de programmation Kotlin. Même si nous avons couvert plusieurs constructions ici, Kotlin a beaucoup plus à offrir. En fait, à compter de juin 2015, Kotlin n’est encore disponible qu’en avant-première. Il est probable que plusieurs améliorations et nouvelles fonctionnalités apparaissent dans les mois à venir..
Si vous voulez savoir comment utiliser Kotlin dans Android Studio, consultez la section Comment utiliser Kotlin dans vos projets Android. Pour en savoir plus sur la langue Kotlin, je vous recommande de consulter la documentation Kotlin.