186 votes

Exemple de quand utiliser run, let, apply, also et with sur Kotlin

Je souhaite avoir un bon exemple pour chaque fonction exécuter, laisser, appliquer, aussi, avec

J'ai lu cet article mais il manque toujours un exemple

0 votes

Utilisez kotlinlang.org/docs/scope-functions.html#fonction-selection pour avoir un aperçu rapide du récepteur et de la valeur de retour.

3voto

Denis Points 300

Je dois avouer que la différence n'est pas si évidente à première vue, entre autres parce que ces 5 fonctions sont souvent interchangeables. Voici ce que je comprends :

APPLY -> Initialiser un objet avec ces propriétés et attendre l'objet

val paint = Paint().apply {
    this.style = Paint.Style.FILL
    this.color = Color.WHITE
}

LET -> Isoler un morceau de code et attendre le résultat

val result = let {
    val b = 3
    val c = 2
    b + c
}

ou

val a = 1
val result = a.let {
    val b = 3
    val c = 2
    it + b + c
}

ou

val paint: Paint? = Paint()
paint?.let {
    // here, paint is always NOT NULL
    // paint is "Paint", not "Paint?"
}

AUSSI -> Exécuter 2 opérations en même temps et attendre le résultat

val a = 1
val b = 3
a = b.also { b = a }

AVEC -> Faire quelque chose avec cette variable/objet et n'attendez pas de résultat (chaînage NON autorisé)

with(canvas) {
    this.draw(x)
    this.draw(y)
}

RUN -> Faire quelque chose avec cette variable/cet objet et n'attendez pas de résultat (chaînage autorisé)

canvas.run {
    this.draw(x)
    this.draw(y)
}

ou

canvas.run {this.draw(x)}.run {this.draw(x)}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X