val e var a confronto
Binding immutabili e mutabili.
val e var a confronto è una lezione Scala for Backend Engineering & Functional Programming gratuita su CoddyKit. Questa è la lezione 1 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 Scala for Backend Engineering & Functional Programming, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Scala for Backend Engineering & Functional Programming include 4 lezioni in totale.
Due modi per assegnare un nome ai valori
In Scala, potete associare un nome a un valore usando val oppure var.
val crea un'associazione immutabile: una volta assegnata, non può mai puntare a un altro valore. var crea un'associazione mutabile che potete riassegnare in seguito.
Scegliere tra le due è una delle prime abitudini che sviluppa chi lavora come backend engineer in Scala.
val name = "Ada"
var score = 10Definire una val
Una val è di sola lettura. La assegnate una volta e il compilatore garantisce che rimanga invariata.
Questo rende il codice più facile da comprendere: una val non vi riserva mai sorprese cambiando valore in un'altra parte del programma.
object Main extends App {
val pi = 3.14
println(pi)
}La riassegnazione di una val non è consentita
Provare a riassegnare una val genera un errore di compilazione, non un arresto a runtime. Il compilatore vi impedisce di farlo prima ancora che il programma venga eseguito.
Il frammento seguente fallirebbe con reassignment to val.
val country = "Turkey"
country = "Spain" // error: reassignment to valDefinire una var
Una var può essere riassegnata tutte le volte che volete, purché il nuovo valore abbia un tipo compatibile.
Usate var quando un valore deve davvero cambiare nel tempo, ad esempio un contatore in un ciclo.
object Main extends App {
var count = 0
count = count + 1
count = count + 1
println(count)
}var mantiene il proprio tipo
Anche se una var può essere riassegnata, il suo tipo è fisso al momento della definizione.
Se level inizia come Int, in seguito non potete memorizzarvi una String. Il compilatore rifiuta l'incompatibilità.
var level = 1
level = 5 // ok, still an Int
level = "high" // error: type mismatchPreferire val come impostazione predefinita
Lo stile idiomatico di Scala privilegia val quasi ovunque. L'immutabilità evita intere categorie di bug e rende più sicuro il codice concorrente.
- Scegliete prima
val. - Passate a
varsolo quando avete davvero bisogno della mutabilità.
Riscrivere var come val
Molti cicli che sembrano richiedere una var possono essere espressi con una val e un'espressione.
Qui una somma viene calcolata con un intervallo e sum, senza bisogno di mutazioni.
object Main extends App {
val total = (1 to 5).sum
println(total)
}Ambito di un'associazione
Sia val sia var vivono all'interno del blocco { ... } in cui vengono definite.
Un'associazione dichiarata dentro un blocco non è visibile al suo esterno. Questo mantiene ordinati i nomi e impedisce riutilizzi accidentali.
object Main extends App {
val outer = 1
{
val inner = 2
println(outer + inner)
}
// inner is not visible here
}Lazy val
Una lazy val viene calcolata solo la prima volta che viene usata e poi memorizzata nella cache.
È utile per valori costosi da calcolare di cui potreste non avere sempre bisogno. Il corpo viene eseguito al massimo una volta.
object Main extends App {
lazy val greeting = { println("computing"); "Hi" }
println("before")
println(greeting)
println(greeting)
}val con tipo esplicito
Potete specificare il tipo di un'associazione dopo i due punti. Questo documenta l'intento e può ampliare deliberatamente il tipo.
Qui amount viene dichiarata come Double, anche se 10 appare come un Int.
val amount: Double = 10
val label: String = "price"val e var a confronto
Le due forme si comportano allo stesso modo finché non provate a riassegnare il valore.
val x: assegnata una volta, rimane fissa per sempre.var y: assegnabile e riassegnabile liberamente.
Il programma seguente incrementa solo la var.
object Main extends App {
val base = 100
var bonus = 0
bonus = bonus + 25
println(base + bonus)
}Verifica rapida
Verificate la vostra comprensione di val e var.
Riepilogo
Avete imparato i due modi per associare nomi ai valori in Scala.
valè immutabile ed è la scelta predefinita.varè mutabile e va riservata ai valori che devono cambiare.- Riassegnare una
valè un errore di compilazione. - I tipi sono fissi per entrambe;
lazy valrimanda il calcolo.
Impara Scala con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 39
- Lezioni
- 143
Domande Frequenti
La lezione «val e var a confronto» è gratuita?
Sì — il testo completo di «val e var a confronto» è 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 Scala for Backend Engineering & Functional Programming, passa a CoddyKit PRO. Il corso Scala for Backend Engineering & Functional Programming include 4 lezioni in totale.
Cosa imparerò in «val e var a confronto»?
Binding immutabili e mutabili. Eserciti Scala for Backend Engineering & Functional Programming 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 Scala for Backend Engineering & Functional Programming?
Non è richiesta alcuna esperienza precedente. Scala for Backend Engineering & Functional Programming su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «val e var a confronto»?
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 Scala for Backend Engineering & Functional Programming?
Sì. Ogni lezione Scala for Backend Engineering & Functional Programming 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
- val e var a confronto
- Tipi e valori letterali di base
- Inferenza dei tipi
- Espressioni al posto delle istruzioni