Listen
Ein sehr wichtiges und zentrales Element in JayMo sind Listen.
Erzeugen
Klassisch wird eine neue Liste über den Typ "List" erzeugt:
List
Um eine Liste bereits beim Erstellen mit Werten zu füllen, können verschiedene Objekte übergeben werden:
List( 4, 9, 5, 2, 8, 5 )
Als Kurzforn lässt sich eine neue Liste mit eckigen Klammern erzeugen:
[]
[ 4, 9, 5, 2, 8, 5 ]
Alternativen
Falls eine Liste mit "nil"-Werten benötigt wird ist folgendes möglich:
10 * nil
nil * 10
Beide Zeilen erzeugen eine Liste mit 10 mal "nil".
Verwendung
Mit einer Liste lassen sich nun viele tolle Sachen machen. 😉
[ 4, 9, 5, 2, 8, 5 ].uniq.sort.reverse
Hier wird eine Liste mit einigen Zahlen erstellt, doppelte Einträge entfernt (uniq), die Liste sortiert (sort) und der Inhalt umgedreht (reverse).
Mit der "get"-Funktion kann auf ein Element in der Liste zugegriffen werden:
[ 4, 9, 5, 2, 8, 5 ].sort.get( 2 )
Hier wird die Liste sortiert und das zweite Objekt ausgegeben.
Wichtig
JayMo verwendet Positionen und keinen Index!
1 ist somit das erste Objekt, 2 das Zweite und so weiter.
Positive Zahlen zählen von links, negative Zahlen von rechts.
So lässt sich mit -1 das letzte Objekt abfragen. Mit -2 wird das vorletzte Objekt zurückgegeben.
[ 4, 9, 5, 2, 8, 5 ].get( -2 ).print
Each
Um alle Objekte nach einander zu durchlaufen, wird each verwendet.
JayMo-Classic
l = [ 4, 9, 5, 2, 8, 5 ]
Each( l )
Print it
JayMo-Flow
[ 4, 9, 5, 2, 8, 5 ].each.print
Nach der "each"-Funktion lassen sich weitere Funktionen anhängen. In diesem Fall wird mit "print" die Zahl ausgegeben.
Änderungen verhindern
Mit der Funktion ".fix" lässt sich die Länge einer Liste fixieren. Danach ist es somit nicht mehr möglich hinzuzufügen oder zu entfernen. Wobei die Werte immer noch ausgetauscht werden können.
l = [ 2,5,8 ]
l.fix
Um eine Liste nur noch lesbar zu machen, kann die Funktion ".freeze" aufgerufen werden. Hiermit wird die Liste eingefroren und ist somit nur noch lesbar.
l = [ 2,5,8 ]
l.freeze