Scala voor backend-engineering en functioneel programmeren · Les

null vermijden

De basis van Option

Les 1 van 413 stappen

null vermijden is een gratis Scala voor backend-engineering en functioneel programmeren-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Scala voor backend-engineering en functioneel programmeren. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Scala voor backend-engineering en functioneel programmeren bevat in totaal 4 lessen.

Het probleem met null

In veel talen wordt een ontbrekende waarde weergegeven door null. Maar null veroorzaakt de gevreesde NullPointerException wanneer je vergeet deze te controleren.

Scala biedt een veiliger alternatief: het type Option.

Wat is Option

Option[A] vertegenwoordigt een waarde die wel of niet aanwezig kan zijn. Het heeft precies twee gevallen:

  • Some(value) wanneer er een waarde bestaat
  • None wanneer er geen waarde is

Het type zelf vertelt je dat een waarde kan ontbreken.

object Main {
  def main(args: Array[String]): Unit = {
    val present: Option[Int] = Some(42)
    val absent: Option[Int] = None
    println(present)
    println(absent)
  }
}

Some maken

Wikkel een bestaande waarde in Some om aan te geven dat deze zeker aanwezig is.

object Main {
  def main(args: Array[String]): Unit = {
    val name: Option[String] = Some("Ada")
    println(name)
  }
}

Afwezigheid weergeven met None

None is de enige waarde die je gebruikt wanneer er niets is. Deze werkt voor elk Option-type.

object Main {
  def lookup(found: Boolean): Option[Int] =
    if (found) Some(100) else None
  def main(args: Array[String]): Unit = {
    println(lookup(true))
    println(lookup(false))
  }
}

Functies die kunnen mislukken

Door Option terug te geven, maak je de mogelijkheid van geen resultaat expliciet in de typesignatuur. Aanroepers kunnen dit niet negeren.

object Main {
  def findUser(id: Int): Option[String] =
    if (id == 1) Some("Grace") else None
  def main(args: Array[String]): Unit = {
    println(findUser(1))
    println(findUser(2))
  }
}

Controleren met isDefined en isEmpty

isDefined vertelt je of een Option een Some is, en isEmpty vertelt je of deze None is.

object Main {
  def main(args: Array[String]): Unit = {
    val a: Option[Int] = Some(5)
    val b: Option[Int] = None
    println(a.isDefined)
    println(b.isEmpty)
  }
}

Patroonherkenning op een Option

Omdat Option een sealed ADT is, kun je er patroonherkenning op uitvoeren. Zo behandel je aanwezigheid en afwezigheid duidelijk.

object Main {
  def greet(name: Option[String]): String = name match {
    case Some(n) => s"Hello, $n"
    case None    => "Hello, stranger"
  }
  def main(args: Array[String]): Unit = {
    println(greet(Some("Bo")))
    println(greet(None))
  }
}

Option voor nullable waarden

Als je moet werken met code die null teruggeeft, wikkel je die met Option(...). Dit zet null om in None en elke echte waarde in Some.

object Main {
  def main(args: Array[String]): Unit = {
    val maybe = Option("data")
    val nothing = Option(null)
    println(maybe)
    println(nothing)
  }
}

De standaardbibliotheek geeft Option terug

Veel ingebouwde methoden geven al Option terug in plaats van fouten te riskeren. List.headOption verwerkt bijvoorbeeld lege lijsten veilig.

object Main {
  def main(args: Array[String]): Unit = {
    val xs = List(1, 2, 3)
    val empty = List.empty[Int]
    println(xs.headOption)
    println(empty.headOption)
  }
}

Waarom Option in plaats van null

Option is beter dan null omdat het:

  • Ontbrekende waarden zichtbaar maakt in het type
  • Aanroepers dwingt het geval van afwezigheid te verwerken
  • NullPointerExceptions elimineert
  • Kan worden gecombineerd met map, flatMap en for-comprehensions

Alles samenbrengen

Een kleine zoekactie die Option teruggeeft en vervolgens veilig wordt verwerkt met patroonherkenning.

object Main {
  val prices = Map("apple" -> 3, "pear" -> 5)
  def priceOf(item: String): Option[Int] = prices.get(item)
  def main(args: Array[String]): Unit = {
    priceOf("apple") match {
      case Some(p) => println(s"costs $p")
      case None    => println("not for sale")
    }
    println(priceOf("banana"))
  }
}

Korte controle

Test je begrip van Option.

Samenvatting

Je hebt geleerd null te vermijden met Option:

  • Option[A] is Some(value) of None
  • Het maakt mogelijke afwezigheid expliciet in het type
  • Controleer met isDefined/isEmpty of met patroonherkenning
  • Gebruik Option(x) om nullable waarden in te pakken
  • Bibliotheekmethoden zoals headOption en Map.get geven Option terug
Gratis beginnen

Leer Scala met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
39
Lessen
143

Veelgestelde vragen

Is de les “null vermijden” gratis?

Ja — de volledige tekst van “null vermijden” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Scala voor backend-engineering en functioneel programmeren wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Scala voor backend-engineering en functioneel programmeren bevat in totaal 4 lessen.

Wat leer ik in “null vermijden”?

De basis van Option Je oefent met Scala voor backend-engineering en functioneel programmeren door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Scala voor backend-engineering en functioneel programmeren te beginnen?

Ervaring vooraf is niet nodig. Scala voor backend-engineering en functioneel programmeren op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “null vermijden”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Scala voor backend-engineering en functioneel programmeren?

Ja. Elke les over Scala voor backend-engineering en functioneel programmeren bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. null vermijden
  2. map en flatMap op Option
  3. getOrElse en fold
  4. Option in for-comprehensions
← Terug naar Scala voor backend-engineering en functioneel programmeren