Vorige: Einführung in Strukturen, Nach oben: Strukturen [Inhalt][Index]
structures
ist eine Informationsliste, die die vom Benutzer mit der
Funktion defstruct
definierten Strukturen enthält.
Definiert eine Struktur, als eine Liste mit den Feldnamen a_1, …,
a_n und dem Namen S für die Struktur. Eine Instanz einer
Struktur ist ein Ausdruck mit dem Operator S und n Argumenten,
die die Werte der Felder sind. Mit dem Kommando new(S
wird eine
neue Instanz einer Struktur S generiert. Siehe auch new
.
Mit einem Symbol a als Argument wird der Name eines Feldes bezeichnet.
Mit einer Gleichung a = v
wird der Name des Feldes als
a bezeichnet und ein Standardwert v definiert. Der Standardwert
v kann ein beliebiger Ausdruck sein.
defstruct
legt die Definition der Struktur S in der
Informationsliste structures
ab.
Mit dem Kommando kill(S)
wird die Definition einer Struktur
gelöscht und von der Informationsliste structures
entfernt.
Beispiele:
(%i1) defstruct (foo (a, b, c)); (%o1) [foo(a, b, c)] (%i2) structures; (%o2) [foo(a, b, c)] (%i3) new (foo); (%o3) foo(a, b, c) (%i4) defstruct (bar (v, w, x = 123, y = %pi)); (%o4) [bar(v, w, x = 123, y = %pi)] (%i5) structures; (%o5) [foo(a, b, c), bar(v, w, x = 123, y = %pi)] (%i6) new (bar); (%o6) bar(v, w, x = 123, y = %pi) (%i7) kill (foo); (%o7) done (%i8) structures; (%o8) [bar(v, w, x = 123, y = %pi)]
new
erzeugt eine neue Instanz einer Struktur.
Das Kommando new(S)
erzeugt eine neue Instanz der Struktur S,
die mit der Funktion defstruct
definiert wurde. Die Felder werden mit
den Standardwerten belegt, wenn die Definition der Struktur Standardwerte
enthält. Ansonsten erhalten die Felder keine Werte.
Das Kommando new(S(v_1, ..., v_n))
erzeugt eine neue
Instanz der Struktur S, wobei die Felder mit den Werten v_1,
…, v_n initialisiert werden.
Beispiele:
(%i1) defstruct (foo (w, x = %e, y = 42, z)); (%o1) [foo(w, x = %e, y = 42, z)] (%i2) new (foo); (%o2) foo(w, x = %e, y = 42, z) (%i3) new (foo (1, 2, 4, 8)); (%o3) foo(w = 1, x = 2, y = 4, z = 8)
@
ist der Operator für den Zugriff auf ein Feld einer Struktur. Der
Ausdruck x@a
bezeichnet das Feld a der Instanz x
einer Struktur. Der Feldname wird nicht ausgewertet.
Hat das Feld a der Instanz x keinen Wert, wird der Ausdruck
x@a
zu sich selbst ausgewertet.
kill(x@a)
löscht den Wert des Feldes a der Instanz
x einer Struktur.
Beispiele:
(%i1) defstruct (foo (x, y, z)); (%o1) [foo(x, y, z)] (%i2) u : new (foo (123, a - b, %pi)); (%o2) foo(x = 123, y = a - b, z = %pi) (%i3) u@z; (%o3) %pi (%i4) u@z : %e; (%o4) %e (%i5) u; (%o5) foo(x = 123, y = a - b, z = %e) (%i6) kill (u@z); (%o6) done (%i7) u; (%o7) foo(x = 123, y = a - b, z) (%i8) u@z; (%o8) u@z
Der Feldname wird nicht ausgewertet.
(%i1) defstruct (bar (g, h)); (%o1) [bar(g, h)] (%i2) x : new (bar); (%o2) bar(g, h) (%i3) x@h : 42; (%o3) 42 (%i4) h : 123; (%o4) 123 (%i5) x@h; (%o5) 42 (%i6) x@h : 19; (%o6) 19 (%i7) x; (%o7) bar(g, h = 19) (%i8) h; (%o8) 123
Vorige: Einführung in Strukturen, Nach oben: Strukturen [Inhalt][Index]