1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Variante Records

    • Frage
  • Johannes123
  • 26. November 2007 um 19:22
  • Unerledigt
  • Johannes123
    3
    Johannes123
    Mitglied
    Punkte
    95
    Beiträge
    13
    • 26. November 2007 um 19:22
    • #1

    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.

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 26. November 2007 um 20:33
    • #2

    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:

    Code
    type 
    TPoint = record
      X: Longint;
      Y: Longint;
    end;
    
    
    TRect = record
      case Integer of
        0: (Left, Top, Right, Bottom: Integer);
        1: (TopLeft, BottomRight: TPoint);
      end;
    Alles anzeigen


    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:

    Code
    struct point
    {
        long x;
        long y;
    };
    
    
    struct trect
    {
        int flag;
        union
        {
            struct coordinates { int top; int left; int bottom; int right; };
            struct corners { struct point topleft; struct point bottomright; };
        } rect;
    };
    Alles anzeigen

    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*

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung