Espressioni al posto delle istruzioni
Tutto restituisce un valore.
Espressioni al posto delle istruzioni è una lezione Scala for Backend Engineering & Functional Programming 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 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.
Tutto è un'espressione
In molti linguaggi, if e i blocchi sono istruzioni che eseguono un'operazione ma non producono alcun valore. In Scala sono espressioni che vengono valutate producendo un valore.
Questo cambiamento è alla base della programmazione funzionale in Scala.
val max = if (3 > 2) 3 else 2if come espressione
Un if/else in Scala restituisce il valore del ramo eseguito. Potete assegnare direttamente il risultato a un val.
Non serve una variabile mutabile da impostare all'interno dei rami.
object Main extends App {
val temp = 18
val label = if (temp > 20) "warm" else "cool"
println(label)
}I blocchi restituiscono l'ultima riga
Un blocco { ... } è a sua volta un'espressione. Il suo valore è quello della ultima espressione al suo interno.
In questo caso il blocco viene valutato come 30, che diventa il valore di result.
object Main extends App {
val result = {
val a = 10
val b = 20
a + b
}
println(result)
}Non serve un return esplicito
Poiché il corpo di un metodo è un'espressione, il suo valore è semplicemente quello dell'ultima espressione valutata. La parola chiave return viene usata raramente.
I due metodi seguenti si comportano allo stesso modo, ma quello idiomatico omette return.
def double(x: Int) = x * 2
// instead of: def double(x: Int) = { return x * 2 }Anche match è un'espressione
Anche il pattern matching con match produce un valore, il che lo rende perfetto per associare gli input ai risultati.
Ogni ramo di case produce il valore del relativo ramo.
object Main extends App {
val day = 3
val name = day match {
case 1 => "Mon"
case 3 => "Wed"
case _ => "Other"
}
println(name)
}Le espressioni si compongono
Poiché le espressioni restituiscono valori, potete annidarle e combinarle liberamente.
Un if può essere l'argomento di una funzione o far parte di un calcolo più ampio, senza variabili temporanee.
object Main extends App {
val n = 7
println("sign: " + (if (n >= 0) "+" else "-"))
}Le istruzioni esistono ancora
Non tutto produce un valore utile. Le operazioni eseguite solo per i loro effetti collaterali, come println o un'assegnazione, vengono valutate come Unit.
Queste sono le espressioni simili a istruzioni di Scala.
val x: Unit = println("hello") // value is ()Evitate var con le espressioni
Lo stile basato sulle espressioni permette di sostituire i pattern con var mutabili. Invece di dichiarare un var e assegnargli un valore nei rami, assegnate l'intero if a un val.
object Main extends App {
val score = 85
val grade = if (score >= 90) "A" else if (score >= 80) "B" else "C"
println(grade)
}for produce valori
Un for con yield è un'espressione che crea una nuova collezione, invece di limitarsi a iterare producendo effetti collaterali.
In questo modo l'iterazione diventa una trasformazione che produce un valore.
object Main extends App {
val squares = for (i <- 1 to 4) yield i * i
println(squares)
}Perché è importante nel codice backend
Il codice orientato alle espressioni tende a essere più breve, ha meno elementi da gestire ed è più facile da testare.
- Meno variabili mutabili significa meno bug.
- I risultati derivano naturalmente dagli input.
- Si integra bene con le librerie funzionali di Scala.
Stile a istruzioni e stile a espressioni
Confrontate i due approcci. Lo stile a istruzioni modifica una variabile; quello a espressioni restituisce direttamente un valore.
Scala permette entrambi gli approcci, ma preferisce lo stile a espressioni.
var s = "" // statement style
if (true) s = "yes" else s = "no"
val e = if (true) "yes" else "no" // expression styleVerifica rapida
Che cosa restituisce la valutazione di un if/else in Scala?
Riepilogo
Scala privilegia le espressioni che producono valori rispetto alle istruzioni che modificano soltanto lo stato.
if,match, i blocchi efor/yieldrestituiscono tutti dei valori.- I corpi dei metodi restituiscono la loro ultima espressione;
returnè raramente necessario. - Il codice con effetti collaterali restituisce
Unit. - Questo stile riduce l'uso di
vare il numero di bug.
Domande Frequenti
La lezione «Espressioni al posto delle istruzioni» è gratuita?
Sì — il testo completo di «Espressioni al posto delle istruzioni» è 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 «Espressioni al posto delle istruzioni»?
Tutto restituisce un valore. 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 4 di 4.
Quanto tempo richiede la lezione «Espressioni al posto delle istruzioni»?
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