Classi locali
Classi nelle funzioni
Classi locali è una lezione Kotlin Academy gratuita su CoddyKit. Questa è la lezione 4 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.
Classi all’interno delle funzioni
Kotlin consente di dichiarare una classe locale all’interno del corpo di una funzione. È visibile solo all’interno di quella funzione.
fun main() {
class Greeting(val text: String) {
fun show() = println(text)
}
Greeting("Hello local").show()
}Limitata alla funzione
Una classe locale non può essere utilizzata al di fuori della funzione in cui è dichiarata, mantenendo i tipi di supporto strettamente circoscritti.
fun build(): String {
class Builder {
fun make() = "built"
}
return Builder().make()
}
fun main() {
println(build())
}Acquisizione delle variabili locali
Come le closure, le classi locali possono acquisire variabili dalla funzione contenitore.
fun main() {
val prefix = ">> "
class Logger {
fun log(msg: String) = println(prefix + msg)
}
Logger().log("started")
}Più istanze
È possibile creare tutte le istanze desiderate di una classe locale all’interno della funzione.
fun main() {
class Point(val x: Int)
val a = Point(1)
val b = Point(2)
println(a.x + b.x)
}Classe locale con metodi
Le classi locali sono classi complete: funzionano costruttori, proprietà e metodi.
fun main() {
class Account(var balance: Int) {
fun deposit(n: Int) { balance += n }
}
val acc = Account(100)
acc.deposit(50)
println(acc.balance)
}Perché usare una classe locale?
La utilizzi quando un tipo di supporto è significativo solo all’interno di una singola funzione, evitando di ingombrare il file con tipi di primo livello.
fun parseLine(line: String): Int {
class Token(val value: String)
val tokens = line.split(",").map { Token(it) }
return tokens.size
}
fun main() {
println(parseLine("a,b,c"))
}Acquisizione di stato mutabile
Una classe locale può modificare le variabili mutabili acquisite dall’ambito contenitore.
fun main() {
var total = 0
class Adder {
fun add(n: Int) { total += n }
}
val a = Adder()
a.add(5)
a.add(7)
println(total)
}Implementazione locale di interfacce
Le classi locali possono implementare interfacce, una soluzione utile quando serve un’implementazione con nome e riutilizzabile all’interno di una sola funzione.
interface Step { fun run(): String }
fun main() {
class First : Step {
override fun run() = "first"
}
println(First().run())
}Classe locale o oggetto anonimo
Scelga una classe locale quando ha bisogno di un nome, ad esempio per creare più istanze o fare riferimento al tipo. Scelga un oggetto anonimo per una singola istanza inline.
fun main() {
class Repeater(val times: Int) {
fun run() = "x".repeat(times)
}
println(Repeater(3).run())
}Annidamento nei cicli
Una classe locale può essere dichiarata persino all’interno di blocchi come i cicli, con ambito limitato a quel blocco.
fun main() {
for (i in 1..2) {
class Tag(val id: Int)
println(Tag(i).id)
}
}Un supporto pratico
Le classi locali sono particolarmente adatte a brevi tipi di supporto del dominio utilizzati da un’unica funzione.
fun report(values: List<Int>): String {
class Stats(val sum: Int, val max: Int)
val s = Stats(values.sum(), values.max())
return "sum=${s.sum} max=${s.max}"
}
fun main() {
println(report(listOf(3, 7, 2)))
}Verifica rapida
Verifichi la sua comprensione delle classi locali.
Riepilogo
Ha imparato a conoscere le classi locali:
- Vengono dichiarate all’interno di una funzione e hanno un ambito limitato a essa.
- Possono acquisire e modificare le variabili locali contenitore.
- Sono classi complete: costruttori, proprietà, metodi e interfacce.
- Utilizzi una classe locale quando ha bisogno di un nome; scelga un oggetto anonimo per una singola istanza inline.
fun main() {
val tag = "L"
class C { fun show() = tag }
println(C().show())
}Domande Frequenti
La lezione «Classi locali» è gratuita?
Sì — il testo completo di «Classi locali» è 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 «Classi locali»?
Classi nelle funzioni 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 4 di 4.
Quanto tempo richiede la lezione «Classi locali»?
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
- Classi annidate
- Classi inner
- Oggetti anonimi
- Classi locali