1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Variante Records

    • Frage
  • Johannes123
  • 26. November 2007 um 19:22
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Johannes123
    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!
    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.

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum