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:
applyutilizzathised è ideale per configurare le proprietà.alsoutilizzaited è 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:
applyutilizzathisper configurare un oggetto.alsoutilizzaitper 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
- let e run
- apply e also
- with
- Scelta dell'opzione corretta