$map

Utilisation: $map(nom,code[,séparateur])
Catégorie: multi-valeur
Mis en œuvre: Picard 2.3

La description:

Itère sur chaque élément trouvé dans la variable à valeurs multiples nom et met à jour la valeur de l’élément à la valeur renvoyée par code, renvoyant la variable à valeurs multiples mise à jour. Une valeur littérale représentant une valeur multiple peut être remplacée par nom, en utilisant le séparateur (ou un point-virgule suivi d’un espace « ;  » s’il n’est pas passé) pour contraindre la valeur à une valeur multiple appropriée variable.

Pour chaque boucle, la valeur de l’élément est d’abord stockée dans la variable _loop_value et le décompte est stocké dans la variable _loop_count. Cela permet d’accéder à l’élément ou à la valeur de comptage dans le script de code.

Les éléments vides sont automatiquement supprimés de la sortie.

Note

Vous ne pouvez pas enregistrer le code dans une variable puis passer la variable à la fonction en tant que %code% car il sera évalué lorsqu’il sera affecté à la variable plutôt que pendant la boucle.

Exemple:

Les instructions suivantes renverront les valeurs indiquées :

$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"