$map

Gebruik: $map(naam,code[,scheidingsteken])
Categorie: meervoudig
Geïmplementeerd: Picard 2.3

Beschrijving:

Itereert over elk element dat in de meervoudige variabele naam is gevonden en verandert de waarde van het element naar de waarde die code retourneert. Het resultaat is weer een meervoudige variabele. In plaats van naam kan je ook een tekenreeks opgegeven, zodat deze tekenreeks in een meervoudige variabele wordt omgezet. Je kan het scheidingsteken voor deze tekenreeks opgeven met de derde parameter (als je deze parameter niet opgeeft, wordt ‘; ’ gebruikt).

Bij elke lus wordt de waarde van het element eerst opgeslagen in de variabele _loop_value en de teller in de variabele _loop_count. Zo kunnen de waarde van het element en de teller worden gebruikt door het script van code.

Lege elementen worden automatisch uit de uitvoer verwijderd.

Notitie

Je kan de code niet naar een variabele opslaan en vervolgens de variabele als %code% aan de functie doorgeven, omdat de code wordt geëvalueerd wanneer hij aan de variabele wordt toegewezen, en niet tijdens de lus.

Voorbeeld:

De volgende instructies retourneren de aangegeven waarden:

$set(foo,First:A; Second:B)
$map(%foo%,$upper(%_loop_count%=%_loop_value%))    ==>  "1=FIRST:A; SECOND:B"
$map(%foo%,$upper(%_loop_count%=%_loop_value%),:)  ==>  "1=FIRST:2=A; SECOND:3=B"

$setmulti(bar,First:A; Second:B)
$map(%bar%,$upper(%_loop_count%=%_loop_value%))    ==>  "1=FIRST:A; 2=SECOND:B"
$map(%bar%,$upper(%_loop_count%=%_loop_value%),:)  ==>  "1=FIRST:2=A; SECOND:3=B"

$setmulti(baz,A; B; x; C)
$map(%baz%,$if($eq(%_loop_value%,x),,%_loop_count%=%_loop_value%))
                                                   ==> "1=A; 2=B; 4=C"
$map(First:A; Second:B,
   $upper(%_loop_count%=%_loop_value%))            ==>  "1=FIRST:A; 2=SECOND:B"

$map(First:A; Second:B,
   $upper(%_loop_count%=%_loop_value%),:)          ==>  "1=FIRST:2=A; SECOND:3=B"