this documentation is work-in-progress, edit here (md).

Reeksen

XOScript kent twee soorten verzamelingen: reeksen en lijsten. Reeksen zijn opsommingen van objecten met een vaste volgorde. Lijsten hebben geen volgorde, maar lijken meer op een woordenboek, waarbij sprake is van een ingang (of term) en de bijbehorende betekenis (waarde).

Voorbeeld van het gebruik van een Reeks:

>> continenten := Reeks
~ ['Oceanië']
~ ['Amerika']
~ ['Azië']
~ ['Europa']
~ ['Afrika']
~ ['Antarctica']
~ ['Australië'].
continenten sorteren: { :a :b
<- a > b.
}.
Uit schrijf: continenten, stop.
Reeks ← ['Afrika'] ; ['Amerika'] ; ['Antarctica'] ;
['Australië'] ; ['Azië'] ; ['Europa'] ; ['Oceanië']

Kettingbericht

Stel, u heeft een reeks:

>> x := Reeks ← 1 ; 2 ; 3.

U wilt het eerste en laatste element verwijderen. In dat geval zou u willen zeggen:

x
neem eerste
neem laatste.

Helaas gaat dat mis, het bericht neem eerste geeft namelijk het eerste element uit de reeks terug, dat wordt dan dus de ontvanger van het bericht neem laatste. U stuurt het bericht neem laatste dus niet naar x maar naar 2. Een mogelijke oplossing voor dit probleem is om er twee zinnen van te maken:

x neem eerste
x neem laatste

Maar dat is natuurlijk onhandig, vooral als u meer dan twee elementen wilt weghalen. Voor dit soort situaties biedt XOScript de aangepaste berichtstructuur. Bij een aangepaste berichtstructuur worden de antwoorden van objecten genegeerd en krijgt u steeds als antwoord weer het ontvangende object terug. U start een aangepaste berichtstructuur door het bericht doen te sturen naar een object en u beëindigt de aangepaste berichtstructuur met het bericht klaar. In ons voorbeeld zouden we de aangepaste structuur als volgt kunnen toepassen:

x
doen
neem eerste
neem laatste
klaar.

Let er wel op dat u afsluit met klaar anders komt u voor verrassingen te staan.