In dem heutigen Artikel will ich euch etwas zu structs erzählen und wie ihr diese in Dr. Racket verwendet.
Ein struct ist im wesentlichen ein Verbund von Datensätzen. Dieser Verbund kann aus verschiedene Datenypen zusammengesetzt werden (Zahle, Texte, Characters). Ich werde euch das einfach mal an einem Beispiel erklären.
Dafür öffnen wir unser Entwicklungsumgebung Dr. Racket. Hier wollen wir nun ein struct anlegen, in dem wir Kontakte mit einem Namen und einer Telefonnummer anlegen wollen.
Dafür verwenden wir den folgenden Befehl:
1 | (define-struct kontakte (name nummer)) |
Jetzt haben wir unser struct in Dr. Racket erstellt. Nun müssen wir diese noch mit Daten füllen. Dafür verwenden wir den folgenden Aufruf:
1 | (define test (make-kontakt „Max Mustermann“ „12345-09876“)) |
Wir haben nun den ersten Eintrag in unserem struct. Dieser hat den Namen test bekommen. Diesen Namen benötigen wir, um die Daten wieder Abfragen zu können. Anschließen erstellen wir mit dem Befehl make-kontakt die Inhalte des Eintrages test.
Nun wollen wir uns mal den Inhalt des structs ausgeben lassen. Als erstes den eingetragenen Namen und als zweites die eingetragene Telefonnummer.
1 2 | (kontakt-name test) (kontakt-nummer test) |
Hallo,
ich bin gerade dabei so eine Datenstruktur erstellen zu wollen, allerdings gibt mir DrRacket jedes Mal einen Fehler.
„Ungebundene Variable“, wenn ich (define-struct …()) verwende.
Woran koennte das liegen?
Heyho,
damit ich das genauer nachvollziehen kann, bräuchte ich deinen Code bzw. den Teil des Codes um den es geht.
Was hast du den für ein Programmier Level eingestellt? Könnte theoretisch auch daran liegen.
Gruß
Christian
ich weiß, es ist eine weile her…
das liegt am copy-paste ;-) es müssen Hochkommata bei den Strings sein und bei define-struct „kontakt“ heißen, nicht „kontaktE“.
also:
(define-struct kontakt (name nummer))
(define test (make-kontakt „Max Mustermann“ „12345-09876“))
Bei der Gelegenheit:
Kennst du Dich auch mit (define-type aus Christian?? Das müsste so ähnlich sein, oder?
LG
Hallo Jonathan,
denke define-type werde ich demnächst mal erklären. Ich bin gerade am überlegen bzw. planen die Artikelreihe einmal neu aufzusetzen =)
LG