Quantcast
Channel: Publicis Sapient Engineering – Engineering Done Right
Viewing all articles
Browse latest Browse all 1865

Pépite #5 – Comprendre les fonctions standard de Kotlin : les fonctions de transformation

$
0
0

Vous avez sûrement entendu parler des Kotlin Standard Functions et vous les utilisez probablement.

Savez-vous exactement leur intérêt et dans quel contexte faut-il les utiliser ? Savez-vous expliquer les différences entre elles ?

Kotlin nous met à disposition un ensemble de fonctions standards que nous pouvons utiliser pour simplifier notre façon de développer afin de rendre notre code plus lisible et plus compréhensible.

Je vais vous montrer cette liste de fonctions qui peuvent sembler similaires à l’utilisation mais qui ont des comportements bien différents et des objectifs bien précis : let, run, also, apply et with.

Avant de commencer, il faut savoir que ces fonctions sont à retrouver depuis la librairie kotlin-stdlib.

build.gradle
dependencies {
	implement "org.jetbrains.kotlin:kotlin-stdlib"
}

 

Les fonctions standard de Kotlin sont réparties en 2 catégories selon leur contexte d’utilisation.

Nous avons les fonctions de transformation let et run sur lesquelles nous allons faire un focus dans cette pépite, et les fonctions de mutation also, apply et with à retrouver dans la suivante.

Commençons par vous présenter nos 2 fonctions.

let

Probablement la plus utilisée dans le cas où nous voulons contourner la valeur null, let garde la valeur de l’objet sur lequel elle est appliquée et renvoie le résultat du bloc.

Par défaut, let retourne un type Unit mais dans notre exemple nous retournons un Int pour surcharger la valeur de result.

data class Person(var name : String, var age: Int)
val person = Person("Henri Pottier", 26)

// Before 'let'
var result = null
if (person != null) {
	print("${person.name} is ${person.age}")
    result = person.age * 2
}

// With 'let'
val result = person?.let {
	print("${it.name} is ${it.age}") // Henri Pottier is 26
	it.age * 2
}
// person = Person(name=Henri Pottier, age=26)
// result = 52

run

run est également une fonction de transformation comme let à la différence près que l’objet est exposé en this.

Généralement utilisée pour enchainer un bloc d’opérations afin de le distinguer et de le mettre dans notre contexte de traitement.

val person = Person("Henri Pottier", 26)

// Before 'run'
person.age = 54
print("${person.name} is ${person.age}") // Henri Pottier is 54
val result = person.age * 2

// With 'run'
val result = person.run {
	age = 54
	print("$name is $age") // Henri Pottier is 54
	age * 2
}
// person = Person(name=Henri Pottier, age=26)
// result = 108

// Without object
run {
	val person = Person("John Doe", 32)
	print("$person") // Person(name=John Doe, age=32)
}
print("$person") // Person("Henri Pottier", 54)

 

Nous avons maintenant compris comment utiliser les fonctions de transformation, la prochaine pépite consistera à présenter les fonctions de mutation apply et also.

Il faut bien comprendre, comme décrit ci-dessus, que let et run sont des fonctions de transformation et apply et also sont des fonctions de mutation.

Cette distinction est très utile car elle vous permet de montrer l’intention de votre code. Ayez pour objectif la lisibilité pour une meilleure compréhension de votre code à partir de sa forme.

Construisons un code propre à la portée de tous ! Construisons un monde meilleur !


Viewing all articles
Browse latest Browse all 1865

Trending Articles