0Pricing
Kotlin Academy · Leçon

with

Regrouper des opérations

with est une leçon Kotlin Academy gratuite sur CoddyKit. Ceci est la leçon 3 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.

La fonction with

with est une fonction de portée qui prend un objet comme argument (et non comme récepteur d’un appel) et exécute un bloc avec cet objet sous le nom this. Elle renvoie le résultat de la lambda.

Utilisation de base de with

Vous transmettez l’objet à with et accédez directement à ses membres dans le bloc.

fun main() {
    val name = "Kotlin"
    val description = with(name) {
        "$this has $length characters"
    }
    println(description)
}

Regrouper plusieurs opérations

with est particulièrement utile lorsque vous devez appeler plusieurs méthodes ou lire plusieurs propriétés du même objet. Elle évite de répéter le nom de l’objet.

fun main() {
    val sb = StringBuilder()
    with(sb) {
        append("Line 1\n")
        append("Line 2\n")
        append("Line 3")
    }
    println(sb)
}

with utilise this

Comme run et apply, with expose l’objet sous le nom this, de sorte que l’accès aux membres ne nécessite aucun préfixe.

data class Rectangle(val width: Int, val height: Int)

fun main() {
    val rect = Rectangle(4, 5)
    val area = with(rect) {
        width * height
    }
    println("Area: $area")
}

with renvoie le résultat de la lambda

La valeur de la dernière expression du bloc devient le résultat de with, tout comme pour run.

fun main() {
    val list = listOf(1, 2, 3, 4, 5)
    val summary = with(list) {
        "Size=$size, First=${first()}, Last=${last()}"
    }
    println(summary)
}

with et run

with(obj) { ... } et obj.run { ... } font presque la même chose. La différence tient à la syntaxe :

  • run est une fonction d’extension appelée sur l’objet ; elle fonctionne donc très bien avec les appels sécurisés.
  • with prend l’objet comme argument et se lit naturellement comme « avec cet objet, effectuer… ».
fun main() {
    val s = "data"
    val a = with(s) { uppercase() }
    val b = s.run { uppercase() }
    println("$a $b")
}

with n’est pas adapté aux valeurs nullables

Comme l’objet est transmis comme argument, with ne se combine pas bien avec l’opérateur d’appel sécurisé. Pour les récepteurs nullables, préférez obj?.run { } ou obj?.let { }.

fun main() {
    val name: String? = "Eve"
    name?.run { println("Hello $this") }
    println("with is awkward for nullables")
}

Lire et calculer en même temps

Un schéma courant consiste à lire plusieurs propriétés et à calculer un résultat unique, le tout dans un seul bloc facile à lire.

data class Order(val items: Int, val pricePerItem: Int)

fun main() {
    val order = Order(3, 20)
    val total = with(order) {
        items * pricePerItem
    }
    println("Total: $total")
}

Construire des chaînes avec with

Associé à buildString ou StringBuilder, with permet d’écrire proprement du code de construction sans préfixe.

fun main() {
    val report = StringBuilder()
    with(report) {
        appendLine("Report")
        appendLine("======")
        appendLine("All good")
    }
    print(report)
}

with sur une collection

Vous pouvez appeler plusieurs fonctions de collection sur la même liste sans répéter son nom.

fun main() {
    val numbers = listOf(10, 20, 30)
    with(numbers) {
        println("Sum: ${sum()}")
        println("Max: ${max()}")
        println("Average: ${average()}")
    }
}

Quand utiliser with

Choisissez with lorsque vous disposez d’un objet non nul et souhaitez effectuer un groupe d’opérations sur celui-ci, avec la possibilité de renvoyer un résultat. Cela indique : « je travaille avec cet objet pendant un certain temps ».

Vérification rapide

Comment with reçoit-elle son objet ?

Récapitulatif

with regroupe des opérations sur un seul objet non nul transmis comme argument, l’expose sous le nom this et renvoie le résultat de la lambda. Elle ressemble à run, mais utilise une syntaxe avec argument. Vous allez ensuite apprendre à choisir la fonction de portée adaptée à chaque situation.

Questions Fréquemment Posées

La leçon « with » est-elle gratuite ?

Oui — le texte complet de « with » 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 « with » ?

Regrouper des opérations 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 3 sur 4.

Combien de temps prend la leçon « with » ?

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. let et run
  2. apply et also
  3. with
  4. Choisir le bon outil
← Retour à Kotlin Academy