Lade...
 

Vektor

Vektor

Vergleichbar mit geordneten Collections (Arrays/Listen) in anderen Sprachen (C++, JavaScript, Scala, Factor) kann ein Teil des Stacks als zusammengehörig markiert und damit als eine Einheit aufgefasst werden. Mit Opening Bracket und Closing Bracket werden die zwischen diesen Markern liegende Werte zu einem Vektor zusammengefasst.

Dies kann bspw. dazu genutzt werden, InstantView®-Anweisungen eine variable Anzahl an Parametern zu übergeben.

Vektoren in InstantView® können Elemente unterschiedlichen Typs enthalten. Ein Beispiel eines Vektors:

[ "Hallo" 1 5m NULL ]

Vektoren existieren auf dem Stack in zwei verschiedenen Zuständen:

  • als eine Folge von Einträgen, die mit Opening Bracket beginnt und mit Closing Bracket endet
  • als ein Eintrag, der den gesamten Vektor enthält (ohne Opening Bracket und Closing Bracket). Eine Variable enthält einen Vektor immer in dieser Form.
    InstantView® benutzt intern verschiedene Repräsentationen für Vektoren, angepasst an die enthaltenen Elemente.

Zwischen diesen Zuständen kann mithilfe des Operators # gewechselt werden.

Operationen mit Vektoren werden durch folgende Anweisungen unterstützt:

-> var Zuweisung zu einer Variablen
# Opening Bracket e1, ...en Closing Bracket in einen Stackeintrag zusammenfassen (shrink) bzw. die umgekehrte Operation (explode)
| Vektoren zusammenfügen, ein Element zu einem Vektor hinzufügen (addieren), Ergebnis ist ein neuer Vektor
- Vektorelement aus einem Vektor entfernen, Ergebnis ist ein neuer Vektor
= zwei Vektoren miteinander vergleichen
Insert ein Element einem Vektor hinzufügen
GetElement das k-te Element eines Vektors erhalten
Revert Reihenfolge der Elemente eines Vektors umkehren
GetVector Vektor konstruieren  (aus den Elementen einer Collection,  ...)
CreateVector(n) leeren Vektor erzeugen (für n Elemente prä-allokiert)
StringVector Aus einer Zeichenkette einen Vektor erzeugen

 
Anweisungen, die Vektoren als Eingabeparameter akzeptieren sind:
SetFormat, SetSort, FillObox, UpdateObox, RemoveObox, SetSelection, PutLine, Insert, Remove, GetObject . . .

Mit Anweisung iterate kann über die Elemente eines Vektor iteriert werden.