7.2 Ringe

Listen haben einen Anfang und ein Ende. Wenn man sie aber zu einem Kreis formt, dann entsteht ein Ring. Ringe sind auch Datenstrukturen in Sonic Pi. Bei ihnen gibt es kein Ende. Dementsprechend kann man auf Elemente von ihnen über einen beliebig hohen Index zugreifen – selbst wenn nur eine sehr beschränkte Anzahl von Elementen zur Verfügung steht.

Da fragt man sich natürlich wie das funktioniert. Ganz einfach. Bei jeder neuen Umkreisung des Ringes wird der Index nicht auf Null gesetzt, sondern einfach weiter gezählt. Hat man zum Beispiel einen Ring mit 4 Elementen, dann wird das erste Element wie immer mit dem Index 0 angesprochen. Aber ebenso funktioniert 4, 8, 12 usw. Das 2. Element kann dann über den Index 1 und 5 und 9 usw. angesprochen werden.

Jetzt muss man nur noch wissen, wie man einen Ring erzeugt. Da gibt es 2 Möglichkeiten, aber ich will hier nur eine vorstellen. Man hängt an die Liste einfach hinter einen Punkt das Wort <ring> an, wie es auch im folgenden Beispiel gezeigt wird.

[40, 60, 69, 55].ring

Die Schreibweise ist (fast) konsistent mit vielen anderen Programmiersprachen, bei denen man Objekte über Methoden modifizieren kann. Die Liste [..] ist hier das Objekt, und die Methode <ring> erzeugt daraus den Ring und damit man weiß, dass es hier zwei Sachen sind, wird ein Punkt dazwischen gesetzt.