Pfadabhängige Typen

Wenn eine Sprache erlaubt, Typen zu verschachteln, bietet sie auch Möglichkeiten, die daraus resultierenden Typpfade zu referenzieren. Man sollte sie im Prinzip verstanden haben, auch wenn sie in der Praxis eher selten verwendet werden, zumal die Fehlermeldungen des Compilers häufigt Typpfade enthalten.

Betrachten Sie das folgende Beispiel:

// code-examples/TypeSystem/typepaths/type-path-wont-compile.scala
// FEHLER: Nicht kompilierbar

trait Service {
  trait Logger {
    def log(message: String): Unit
  }
  val logger: Logger
  
  def run = {
    logger.log("Starte " + getClass.getSimpleName + ":")
    doRun
  }
  
  protected def doRun: Boolean
}

object MyService1 extends Service {
  class MyService1Logger extends Logger {
    def log(message: String) = println ...

Get Programmieren mit Scala now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.