match-udtryk
Forgren efter struktur
match-udtryk er en gratis Scala til backendudvikling og funktionel programmering-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Scala til backendudvikling og funktionel programmering, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Scala til backendudvikling og funktionel programmering-kurset indeholder 4 lektioner i alt.
Hvad er match?
match er Scala's kraftfulde forgreningskonstruktion. Du giver den en værdi og en række case-mønstre, og den kører den første gren, der matcher.
Tænk på den som en mere kapabel, udtryksbaseret version af en switch-sætning.
Grundlæggende syntaks
Du skriver value match { case pattern => result }. Hver case definerer et mønster og den kode, der skal køres, når det matcher.
Fordi match er et udtryk, returnerer hele konstruktionen en værdi.
object Main {
def main(args: Array[String]): Unit = {
val n = 2
val word = n match {
case 1 => "one"
case 2 => "two"
case 3 => "three"
}
println(word)
}
}Wildcard-casen
Understregningen _ er et wildcard, der matcher alt. Brug den som en standard-catch-all til sidst.
Uden den kaster en værdi, der ikke matcher noget, en MatchError under kørsel.
object Main {
def main(args: Array[String]): Unit = {
val n = 9
val word = n match {
case 1 => "one"
case 2 => "two"
case _ => "many"
}
println(word)
}
}Matchning af strenge
Mønstre er ikke begrænset til tal. Du kan matche strengliteraler direkte.
object Main {
def main(args: Array[String]): Unit = {
val cmd = "start"
val msg = cmd match {
case "start" => "Starting up"
case "stop" => "Shutting down"
case _ => "Unknown command"
}
println(msg)
}
}match returnerer en værdi
Da hver gren producerer en værdi, kan du tildele resultatet af match til en val eller bruge det direkte i et udtryk.
Det holder koden ren og undgår variable, der kan ændres.
object Main {
def main(args: Array[String]): Unit = {
val light = "red"
println(s"Action: " + (light match {
case "red" => "stop"
case "green" => "go"
case _ => "caution"
}))
}
}Kombination af cases
Du kan matche flere værdier i én case ved hjælp af | (pipe-tegnet). Alle de angivne værdier fører til den samme gren.
object Main {
def main(args: Array[String]): Unit = {
val day = "Sat"
val kind = day match {
case "Sat" | "Sun" => "weekend"
case _ => "weekday"
}
println(kind)
}
}match i en funktion
Et almindeligt mønster er at gøre hele funktionens krop til ét match-udtryk. Det matchede resultat bliver returværdien.
object Main {
def describe(n: Int): String = n match {
case 0 => "zero"
case 1 => "one"
case _ => "other"
}
def main(args: Array[String]): Unit = {
println(describe(0))
println(describe(5))
}
}Binding af hele værdien
Du kan binde den matchede værdi til et navn i wildcard-casen med case other =>. Derefter kan du bruge other i den gren.
object Main {
def main(args: Array[String]): Unit = {
val n = 42
val result = n match {
case 0 => "nothing"
case other => s"got $other"
}
println(result)
}
}Rækkefølgen betyder noget
Cases testes fra top til bund, og det første match vinder. Placér mere specifikke mønstre før generelle mønstre.
Et wildcard, der placeres for tidligt, ville skjule casene nedenfor.
object Main {
def main(args: Array[String]): Unit = {
val n = 1
val msg = n match {
case 1 => "specific one"
case _ => "anything else"
}
println(msg)
}
}Hvorfor bruge match?
Mønstermatchning er central i Scala, fordi den:
- er let at læse ved forgrening i flere retninger
- returnerer en værdi som et udtryk
- kan skaleres til typer, datastrukturer og guards
- kan kontrolleres for fuldstændighed af compileren
Lad os samle det hele
Her er en lille klassifikator, der bruger literaler, en kombineret case og en standardcase.
object Main {
def grade(score: Int): String = score match {
case 10 | 9 => "excellent"
case 8 | 7 => "good"
case _ => "keep trying"
}
def main(args: Array[String]): Unit = {
println(grade(9))
println(grade(7))
println(grade(3))
}
}Hurtigt tjek
Test din forståelse af match-udtryk.
Opsummering
Du har lært det grundlæggende om match:
- Syntaksen er
value match { case pattern => result } _er wildcard-catch-all- Kombinér værdier med
| matcher et udtryk, der returnerer en værdi- Cases afprøves fra top til bund; det første match vinder
Lær Scala med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 39
- Lektioner
- 143
Ofte stillede spørgsmål
Er lektionen “match-udtryk” gratis?
Ja — hele teksten til “match-udtryk” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Scala til backendudvikling og funktionel programmering-kurset, skal du opgradere til CoddyKit PRO. Scala til backendudvikling og funktionel programmering-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “match-udtryk”?
Forgren efter struktur Du øver dig i Scala til backendudvikling og funktionel programmering med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Scala til backendudvikling og funktionel programmering?
Der kræves ingen tidligere erfaring. Scala til backendudvikling og funktionel programmering på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “match-udtryk”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Scala til backendudvikling og funktionel programmering-lektion?
Ja. Alle Scala til backendudvikling og funktionel programmering-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.