Scala til backendudvikling og funktionel programmering · Lektion

match-udtryk

Forgren efter struktur

Lektion 1 af 413 trin

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 |
  • match er et udtryk, der returnerer en værdi
  • Cases afprøves fra top til bund; det første match vinder
Gratis at komme i gang

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.

Alle lektioner i dette kursus

  1. match-udtryk
  2. Matching af typer og værdier
  3. Guards og binding
  4. Dekonstruktion
← Tilbage til Scala til backendudvikling og funktionel programmering