package kapitel_04 /** * Beispiel aus * * - Algorithmen und Datenstrukturen für Dummies * - von Andreas Gogol-Döring und Thomas Letschert * - Verlag Wiley-VCH; Oktober 2019 * - Kapitel 4, Listen: Immer einer nach dem anderen * * @author A. Gogol-Döring, Th. Letschert */ object AuD_04_05_List_Iterator_App extends App { sealed abstract class IntList extends Iterable[Int] { override def iterator: Iterator[Int] = IntListIterator(this) } case object Nil extends IntList case class Cons(first: Int, rest:IntList) extends IntList case class IntListIterator(private var lst: IntList) extends Iterator[Int] { override def hasNext: Boolean = lst != Nil override def next(): Int = lst match { case Cons(first, rest) => lst = rest first case Nil => throw new NoSuchElementException } } val l: IntList = Cons(1,Cons(2,Cons(3,Cons(4,Cons(5,Cons(6,Cons(7, Nil))))))) for (x <- l) println(x) }