0Pricing
Kotlin Academy · Lezione

apply e also

Configuri gli oggetti e gestisca gli effetti collaterali

apply e also è una lezione Kotlin Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Kotlin Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Kotlin Academy include 4 lezioni in totale.

Configurare gli oggetti

apply e also sono funzioni di ambito che restituiscono l'oggetto stesso invece del risultato della lambda. Per questo sono perfette per la configurazione e la concatenazione.

La funzione apply

apply esegue un blocco con l'oggetto come this e restituisce l'oggetto. È lo strumento classico per inizializzare un oggetto dopo la sua creazione.

fun main() {
    val builder = StringBuilder().apply {
        append("Hello")
        append(", ")
        append("World")
    }
    println(builder.toString())
}

Perché apply restituisce l'oggetto

Poiché apply restituisce il ricevente, può assegnare direttamente l'oggetto configurato a una variabile.

data class Person(var name: String = "", var age: Int = 0)

fun main() {
    val p = Person().apply {
        name = "Alice"
        age = 30
    }
    println(p)
}

apply utilizza this

All'interno di apply, l'oggetto è il ricevente, quindi può accedere direttamente alle sue proprietà senza alcun prefisso.

data class Config(var host: String = "", var port: Int = 0)

fun main() {
    val config = Config().apply {
        host = "localhost"
        port = 8080
    }
    println("${config.host}:${config.port}")
}

La funzione also

also esegue un blocco con l'oggetto come it e restituisce l'oggetto. Viene utilizzata per effetti collaterali, come la registrazione dei log o la convalida, che non modificano l'oggetto.

fun main() {
    val numbers = mutableListOf(1, 2, 3)
    numbers
        .also { println("Before: $it") }
        .add(4)
    println("After: $numbers")
}

also utilizza it

Poiché also espone l'oggetto come it, è comoda quando desidera continuare a fare riferimento al this esterno o semplicemente mantenere esplicito il riferimento.

fun main() {
    val value = 42
        .also { println("Logging value: $it") }
    println(value)
}

apply e also a confronto

La differenza rispecchia quella tra run e let:

  • apply utilizza this ed è ideale per configurare le proprietà.
  • also utilizza it ed è ideale per gli effetti collaterali sull'oggetto.

Entrambe restituiscono l'oggetto originale.

data class Box(var size: Int = 0)

fun main() {
    val box = Box()
        .apply { size = 5 }
        .also { println("Created box with size ${it.size}") }
    println(box)
}

Concatenare apply e also

Poiché entrambe restituiscono l'oggetto, può concatenarle per configurarlo prima ed eseguire poi gli effetti collaterali in una pipeline fluida.

data class Account(var owner: String = "", var balance: Int = 0)

fun main() {
    val account = Account()
        .apply { owner = "Sam" }
        .apply { balance = 100 }
        .also { println("New account: $it") }
    println(account.balance)
}

also per la convalida

Utilizzi also per inserire un controllo nel mezzo di una catena senza interromperne il flusso.

fun main() {
    val result = listOf(1, 2, 3, 4)
        .filter { it % 2 == 0 }
        .also { check(it.isNotEmpty()) { "No even numbers" } }
    println(result)
}

Restituire l'oggetto abilita le pipeline

La caratteristica comune di apply e also è che non interrompono mai una catena, perché restituiscono sempre lo stesso oggetto da cui è iniziata.

fun main() {
    val text = StringBuilder()
        .apply { append("a") }
        .also { it.append("b") }
        .apply { append("c") }
    println(text)
}

Scegliere apply o also

Scelga apply quando inizializza o modifica un oggetto utilizzando i suoi membri. Scelga also quando esegue un'azione che utilizza l'oggetto senza configurarlo, come la registrazione dei log, il debug o la convalida.

Verifica rapida

Quale valore restituiscono apply e also?

Riepilogo

Ha imparato le due funzioni di ambito che restituiscono l'oggetto:

  • apply utilizza this per configurare un oggetto.
  • also utilizza it per gli effetti collaterali su un oggetto.

Entrambe restituiscono l'oggetto, consentendo di creare catene pulite. Ora raggrupperà le operazioni con with.

Domande Frequenti

La lezione «apply e also» è gratuita?

Sì — il testo completo di «apply e also» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Kotlin Academy, passa a CoddyKit PRO. Il corso Kotlin Academy include 4 lezioni in totale.

Cosa imparerò in «apply e also»?

Configuri gli oggetti e gestisca gli effetti collaterali Eserciti Kotlin Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Kotlin Academy?

Non è richiesta alcuna esperienza precedente. Kotlin Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «apply e also»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Kotlin Academy?

Sì. Ogni lezione Kotlin Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. let e run
  2. apply e also
  3. with
  4. Scelta dell'opzione corretta
← Torna a Kotlin Academy