apply et with : configurer et renvoyer
Utilisez apply et with pour configurer des objets et comprendre leurs valeurs de retour.
apply et with : configurer et renvoyer est une leçon Kotlin Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Kotlin Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kotlin Academy comprend 4 leçons au total.
Récapitulatif des fonctions de portée
Les fonctions de portée de Kotlin (apply, also, let, run, with) vous permettent d’exécuter un bloc dans le contexte d’un objet. Elles diffèrent chacune par leur récepteur (this ou it) et leur valeur de retour.
Notions de base de la configuration
apply { ... } exécute le bloc avec this lié au récepteur et renvoie le récepteur lui-même. C’est idéal pour configurer un objet.
class Person {
var name: String = ""
var age: Int = 0
}
fun main() {
val p = Person().apply {
name = "Ada"
age = 35
}
println("${p.name}, ${p.age}")
}Pourquoi la configuration est utile
Sans apply, vous auriez besoin d’une variable temporaire pour configurer l’objet, puis le renvoyer. apply réduit cela à une seule expression.
class Config {
var host: String = ""
var port: Int = 0
}
fun makeConfig(): Config {
// Without apply:
// val c = Config(); c.host = "x"; c.port = 8080; return c
return Config().apply {
host = "localhost"
port = 8080
}
}
fun main() {
val c = makeConfig()
println("${c.host}:${c.port}")
}Enchaîner une configuration
apply renvoie le récepteur, ce qui permet de l’enchaîner naturellement avec d’autres appels de méthode.
class Builder {
val parts = mutableListOf<String>()
}
fun main() {
val result = Builder().apply {
parts.add("hello")
parts.add("world")
}.parts.joinToString(" ")
println(result) // hello world
}Notions de base du bloc contextuel
with(receiver) { ... } exécute le bloc avec this = récepteur et renvoie le résultat de la lambda (PAS le récepteur). C’est utile lorsque vous voulez calculer une valeur dérivée.
class Rect(val w: Int, val h: Int)
fun main() {
val area = with(Rect(3, 4)) {
w * h
}
println(area) // 12
}Configuration contre bloc contextuel
La configuration renvoie le récepteur, ce qui est idéal pour les constructeurs. Le bloc contextuel renvoie le résultat de la lambda, ce qui est idéal pour effectuer un calcul à partir d’un récepteur.
class Box(var width: Int = 0, var height: Int = 0)
fun main() {
val box = Box().apply { width = 10; height = 20 } // returns Box
val area = with(box) { width * height } // returns Int
println("$box area=$area")
}Configuration avec des listes
Configurez une collection modifiable directement dans l’expression.
fun main() {
val list = mutableListOf<String>().apply {
add("a")
add("b")
add("c")
}
println(list)
}La configuration renvoie le même type
Le type de retour de apply est toujours le type du récepteur. Aucun retour explicite n’est nécessaire.
class Sb {
private val buf = StringBuilder()
fun append(s: String): Sb { buf.append(s); return this }
fun build(): String = buf.toString()
}
fun main() {
val s = Sb().apply {
append("Hello, ")
append("Kotlin!")
}.build()
println(s)
}Réutiliser plusieurs membres dans un bloc contextuel
À l’intérieur de with, tous les membres du récepteur sont dans la portée : aucun préfixe obj. n’est nécessaire.
class Person(val name: String, val age: Int)
fun main() {
val description = with(Person("Ada", 35)) {
"Name: $name, Age: $age, AgeNext: ${age + 1}"
}
println(description)
}Configuration imbriquée
Vous pouvez imbriquer apply dans un autre apply pour une configuration hiérarchique. Utilisez cette technique avec parcimonie.
class Address {
var city: String = ""
var zip: String = ""
}
class User {
var name: String = ""
var address: Address = Address()
}
fun main() {
val u = User().apply {
name = "Ada"
address.apply {
city = "Istanbul"
zip = "34000"
}
}
println("${u.name} in ${u.address.city}")
}Quand NOT utiliser la configuration
Si vous n’avez pas besoin de renvoyer le récepteur, préférez une construction simple avec des arguments nommés ou let/run. N’utilisez pas apply uniquement pour varier les approches.
class Config(val host: String, val port: Int)
fun main() {
// Named arguments often beat builder + apply:
val cfg = Config(host = "localhost", port = 8080)
println("${cfg.host}:${cfg.port}")
}Vérification rapide
Que renvoie apply après l’exécution de son bloc ?
Récapitulatif
apply exécute un bloc avec this = le récepteur et renvoie le récepteur — parfait pour configurer un objet. with exécute un bloc avec this = le récepteur et renvoie le résultat de la lambda — parfait pour les valeurs dérivées. Utilisez des arguments nommés lorsque la configuration est simple.
Questions Fréquemment Posées
La leçon « apply et with : configurer et renvoyer » est-elle gratuite ?
Oui — le texte complet de « apply et with : configurer et renvoyer » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Kotlin Academy, passe à CoddyKit PRO. Le cours Kotlin Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « apply et with : configurer et renvoyer » ?
Utilisez apply et with pour configurer des objets et comprendre leurs valeurs de retour. Tu pratiques Kotlin Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Kotlin Academy ?
Aucune expérience préalable n'est requise. Kotlin Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « apply et with : configurer et renvoyer » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Kotlin Academy ?
Oui. Chaque leçon Kotlin Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- apply et with : configurer et renvoyer
- let et run : transformer et définir une portée
- also : effets secondaires sans modifier le récepteur
- Choisir la bonne fonction de portée : guide de décision