Variante Records

  • Was versteht man unter variante Records ? Was ist der Unterschied zu normalen Records?

    Ich finde leider keine Definitionen im Netz.

    Würde mich über eine schnelle Antwort freuen.

  • Der Begriff scheint vor allem in der Pascal-Welt gebräuchlich. Es geht dabei um Records (structs in C), die unterschiedliche Formen annehmen können. D.h. du hast einen Recordtyp, aber abhängig von irgendeinem Flag nimmt er unterschiedliche Formen an. Ein gegoogeltes Beispiel in Pascal:


    Ein TRect hat einen Flag, der angibt, ob die Koordinaten der Eckpunkte einzeln gespeichert sind oder zu Punkten zusammengefasst. Die beiden Darstellungsformen überlappen sich üblicherweise im Speicher.

    Das macht in C sowas:

    In Haskell wäre es:

    Code
    type Point = (Integer, Integer)
    data TRect = Coordinates Integer Integer Integer Integer
               | Corners Point Point

    Der Witz an der Sache ist, daß du eben je nach Flag (bzw. Typkonstruktor in Haskell) unterschiedliche Strukturen hast, aber nur einen gemeinsamen "Obertyp". Damit kannst du verwandte, aber verschiedene Strukturen z.B. in einer Liste speichern.

    *plantsch*

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!