Übungen: Extraktoren

  1. Erzeuge einen Extraktor, der es erlaubt mit Hilfe eines Indexes auf ein Element einer Seq zuzugreifen. Der Code
    Vector(8,2,5) match {
      case isSecond_?(2) => "yes"
      case _ => "no"
    }
    

    soll beispielsweise „yes“ ausgeben. Tipp: Benutze eine Klasse als Extraktor

  2. Die match-Expression erlaubt es mehrere Fälle zu „verodern“, sie aber nicht zu „verunden“. Folgendes ist möglich:
    "Hello World" match {
      case StartsWith('g') | EndsWith('d') => "yes"
      case _ => "no"
    }
    

    Dies hier aber nicht:

    "Hello World" match {
      case StartsWith('H') & EndsWith('d') => "yes"
      case _ => "no"
    }
    

    Finde einen Weg bei einer Eingabe von Strings, mehrere Extraktoren (hier: StartsWith und EndsWith) miteinander zu „verunden“. Tipp: & ist ebenfalls ein Extraktor.

  3. Schreibe Extraktoren für eine Baumrepräsentation:
    val tree: IntTree = Node(Leaf(8), Node(Node(Leaf(9), Empty), Node(Leaf(9), Empty)))
    tree match {
      case Node(Leaf(i @ 8), Node(Node(Leaf(j @ 9), Empty), _)) => "found:"+i+","+j
      case _ => "nothing found"
    }
    

    Entnehme die benötigten Klassen dem obigen Code.

Hier geht es zu den Lösungen.

Advertisements

No comments yet

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: