Scala för backendutveckling och funktionell programmering · Lektion

Uttryck framför satser

Allt returnerar ett värde.

Lektion 4 av 413 steg

Uttryck framför satser är en gratis lektion i Scala för backendutveckling och funktionell programmering på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Scala för backendutveckling och funktionell programmering, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Scala för backendutveckling och funktionell programmering innehåller totalt 4 lektioner.

Allt är ett uttryck

I många språk är if och block s satser som utför något men inte producerar något värde. I Scala är de uttryck som utvärderas till ett värde.

Denna förändring är central för funktionell programmering i Scala.

val max = if (3 > 2) 3 else 2

if som ett uttryck

En Scala-if/else returnerar värdet från den gren som körs. Du kan tilldela resultatet direkt till en val.

Det behövs ingen muterbar variabel som du sätter inuti grenarna.

object Main extends App {
  val temp = 18
  val label = if (temp > 20) "warm" else "cool"
  println(label)
}

Block returnerar sin sista rad

Ett block { ... } är självt ett uttryck. Dess värde är värdet av det sista uttrycket i blocket.

Här utvärderas blocket till 30, som blir värdet för result.

object Main extends App {
  val result = {
    val a = 10
    val b = 20
    a + b
  }
  println(result)
}

Ingen explicit return behövs

Eftersom en metodkropp är ett uttryck är dess värde helt enkelt det sista uttrycket som utvärderas. Nyckelordet return används sällan.

Båda metoderna nedan fungerar likadant, men den idiomatiska varianten utelämnar return.

def double(x: Int) = x * 2
// instead of: def double(x: Int) = { return x * 2 }

match är också ett uttryck

Mönstermatchning med match ger också ett värde, vilket gör den perfekt för att omvandla indata till resultat.

Varje case-gren producerar värdet för den grenen.

object Main extends App {
  val day = 3
  val name = day match {
    case 1 => "Mon"
    case 3 => "Wed"
    case _ => "Other"
  }
  println(name)
}

Uttryck kan kombineras

Eftersom uttryck returnerar värden kan du kapsla in och kombinera dem fritt.

Ett if kan vara argumentet till en funktion eller ingå i en större beräkning, utan tillfälliga variabler.

object Main extends App {
  val n = 7
  println("sign: " + (if (n >= 0) "+" else "-"))
}

Satser finns fortfarande

Allt producerar inte ett användbart värde. Operationer som endast utförs för sina biverkningar, till exempel println eller en tilldelning, utvärderas till Unit.

Detta är uttryck i Scala som fungerar ungefär som satser.

val x: Unit = println("hello") // value is ()

Undvik var med uttryck

Uttrycksstilen gör att du kan ersätta mönster med muterbara var. I stället för att deklarera en var och tilldela den i olika grenar kan du tilldela hela if-uttrycket till 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 producerar värden

En for med yield är ett uttryck som bygger en ny samling i stället för att bara loopa för att utföra biverkningar.

På så sätt omvandlas iteration till en transformation som producerar ett värde.

object Main extends App {
  val squares = for (i <- 1 to 4) yield i * i
  println(squares)
}

Varför det är viktigt för backendkod

Uttrycksorienterad kod tenderar att vara kortare, innehålla färre rörliga delar och vara enklare att testa.

  • Färre muterbara variabler innebär färre buggar.
  • Resultat flödar naturligt från indata.
  • Det fungerar bra tillsammans med Scalas funktionella bibliotek.

Satsstil kontra uttrycksstil

Jämför de två tankesätten. Satsstilen muterar en variabel, medan uttrycksstilen returnerar ett värde direkt.

Scala låter dig använda båda, men föredrar uttrycksstilen.

var s = ""            // statement style
if (true) s = "yes" else s = "no"

val e = if (true) "yes" else "no" // expression style

Snabb kontroll

Vad utvärderas en if/else till i Scala?

Sammanfattning

Scala föredrar uttryck som producerar värden framför satser som endast ändrar tillstånd.

  • if, match, block och for/yield returnerar alla värden.
  • Metodkroppar returnerar sitt sista uttryck; return behövs sällan.
  • Kod med biverkningar returnerar Unit.
  • Denna stil minskar användningen av var och antalet buggar.
Gratis att börja

Lär dig Scala med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
39
Lektioner
143

Vanliga frågor

Är lektionen ”Uttryck framför satser” gratis?

Ja – hela texten till ”Uttryck framför satser” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Scala för backendutveckling och funktionell programmering, kan Ni uppgradera till CoddyKit PRO. Kursen i Scala för backendutveckling och funktionell programmering innehåller totalt 4 lektioner.

Vad lär jag mig i ”Uttryck framför satser”?

Allt returnerar ett värde. Ni övar på Scala för backendutveckling och funktionell programmering med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Scala för backendutveckling och funktionell programmering?

Du behöver inga förkunskaper. Utbildningen i Scala för backendutveckling och funktionell programmering på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Uttryck framför satser”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Scala för backendutveckling och funktionell programmering-lektionen?

Ja. Varje Scala för backendutveckling och funktionell programmering-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. val kontra var
  2. Grundläggande typer och literaler
  3. Typsinferens
  4. Uttryck framför satser
← Tillbaka till Scala för backendutveckling och funktionell programmering