Uttrykk fremfor setninger
Alt returnerer en verdi.
Uttrykk fremfor setninger er en gratis leksjon i Scala for backendutvikling og funksjonell programmering på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Scala for backendutvikling og funksjonell programmering, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Scala for backendutvikling og funksjonell programmering inneholder totalt 4 leksjoner.
Alt er et uttrykk
I mange språk er if og blokker setninger som gjør noe, men ikke produserer noen verdi. I Scala er de uttrykk som evalueres til en verdi.
Dette skiftet står sentralt i funksjonell programmering i Scala.
val max = if (3 > 2) 3 else 2if som et uttrykk
En Scala-if/else returnerer verdien til grenen som kjøres. Du kan tilordne resultatet direkte til en val.
Det er ikke nødvendig med en muterbar variabel som du setter i grenene.
object Main extends App {
val temp = 18
val label = if (temp > 20) "warm" else "cool"
println(label)
}Blokker returnerer sin siste linje
En blokk { ... } er selv et uttrykk. Verdien er verdien til det siste uttrykket i blokken.
Her evalueres blokken til 30, som blir verdien til result.
object Main extends App {
val result = {
val a = 10
val b = 20
a + b
}
println(result)
}Ingen eksplisitt return nødvendig
Ettersom metodekroppen er et uttrykk, er verdien ganske enkelt det siste evaluerte uttrykket. Nøkkelordet return brukes sjelden.
De to metodene nedenfor oppfører seg likt, men den idiomatiske varianten utelater return.
def double(x: Int) = x * 2
// instead of: def double(x: Int) = { return x * 2 }match er også et uttrykk
Mønstergjenkjenning med match gir også en verdi, noe som gjør det perfekt for å omdanne inndata til resultater.
Hver case-gren produserer verdien for den grenen.
object Main extends App {
val day = 3
val name = day match {
case 1 => "Mon"
case 3 => "Wed"
case _ => "Other"
}
println(name)
}Uttrykk kan settes sammen
Fordi uttrykk returnerer verdier, kan du fritt nøste og kombinere dem.
En if kan være argumentet til en funksjon eller inngå i en større beregning, uten midlertidige variabler.
object Main extends App {
val n = 7
println("sign: " + (if (n >= 0) "+" else "-"))
}Setninger finnes fortsatt
Ikke alt produserer en nyttig verdi. Operasjoner som bare utføres for sine bivirkninger, som println eller en tilordning, evalueres til Unit.
Dette er uttrykk i Scala som fungerer som setninger.
val x: Unit = println("hello") // value is ()Unngå var med uttrykk
Uttrykksstilen lar deg erstatte mønstre med muterbare var-er. I stedet for å deklarere en var og tilordne den i grenene, tilordner du hele if-uttrykket til en val.
object Main extends App {
val score = 85
val grade = if (score >= 90) "A" else if (score >= 80) "B" else "C"
println(grade)
}for gir verdier
En for med yield er et uttrykk som bygger en ny samling, i stedet for bare å løkke for å utføre bivirkninger.
Dette gjør iterasjon til en transformasjon som produserer en verdi.
object Main extends App {
val squares = for (i <- 1 to 4) yield i * i
println(squares)
}Hvorfor dette er viktig for backend-kode
Uttrykksorientert kode har en tendens til å være kortere, ha færre bevegelige deler og være enklere å teste.
- Færre muterbare variabler betyr færre feil.
- Resultater flyter naturlig fra inndata.
- Den fungerer godt sammen med funksjonelle Scala-biblioteker.
Setningsstil kontra uttrykksstil
Sammenlign de to tankemåtene. Setningsstilen muterer en variabel, mens uttrykksstilen returnerer en verdi direkte.
Scala lar deg bruke begge, men foretrekker uttrykksstilen.
var s = "" // statement style
if (true) s = "yes" else s = "no"
val e = if (true) "yes" else "no" // expression styleKjapp sjekk
Hva evalueres en if/else til i Scala?
Oppsummering
Scala favoriserer uttrykk som produserer verdier, fremfor setninger som bare endrer tilstand.
if,match, blokker ogfor/yieldreturnerer alle verdier.- Metodekropper returnerer sitt siste uttrykk;
returner sjelden nødvendig. - Kode med bivirkninger returnerer
Unit. - Denne stilen reduserer bruken av
var-er og antallet feil.
Lær deg Scala med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 39
- Leksjoner
- 143
Ofte stilte spørsmål
Er leksjonen «Uttrykk fremfor setninger» gratis?
Ja – hele teksten i «Uttrykk fremfor setninger» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Scala for backendutvikling og funksjonell programmering-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Scala for backendutvikling og funksjonell programmering inneholder totalt 4 leksjoner.
Hva lærer jeg i «Uttrykk fremfor setninger»?
Alt returnerer en verdi. Du øver på Scala for backendutvikling og funksjonell programmering med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Scala for backendutvikling og funksjonell programmering?
Ingen tidligere erfaring er nødvendig. Scala for backendutvikling og funksjonell programmering på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «Uttrykk fremfor setninger»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Scala for backendutvikling og funksjonell programmering-leksjonen?
Ja. Alle Scala for backendutvikling og funksjonell programmering-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- val kontra var
- Grunnleggende typer og literaler
- Typeinferens
- Uttrykk fremfor setninger