0Pricing
Kotlin Academy · Leçon

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

  1. apply et with : configurer et renvoyer
  2. let et run : transformer et définir une portée
  3. also : effets secondaires sans modifier le récepteur
  4. Choisir la bonne fonction de portée : guide de décision
← Retour à Kotlin Academy