Fonctions de transformation
Les fonctions de transformation sont des fonctions d'énumération particulières. Elles permettent de transformer des données afin de les regrouper sous une forme plus lisible.
Tri
sort:array
sort:array by:expression
Trie le tableau array (selon expression le cas échéant).
Exemples
>> fruits = {"pomme", "poire", "fraise", "myrtille", "pêche", "orange", "mirabelle", "framboise", "mûre"}
Trie fruits alphabétiquement:
>> sort:fruits
>> fruits
{
fraise
framboise
mirabelle
myrtille
mûre
orange
poire
pomme
pêche
}
Trie fruits en fonction de la deuxième lettre de chaque mot:
>> sort:fruits by:this[2]
>> fruits
{
pêche
mirabelle
pomme
poire
fraise
framboise
orange
mûre
myrtille
}
Regroupement
group:collection by:expression
Retourne un tableau en subdivisant collection selon la valeur retournée par expression.
Exemple
>> group:fruits by:this[1]
{
Array (1 elem.)
Array (3 elem.)
Array (3 elem.)
Array (2 elem.)
}
Retourne quatre tableaux contenant les mots regroupés selon leur première lettre. Pour afficher tout le résultat:
>> longDescriptionOf:ans
{
{
orange
}
{
pêche
pomme
poire
}
{
mirabelle
mûre
myrtille
}
{
fraise
framboise
}
}
summarize:collection by:expression
Retourne un dictionnaire contenant les éléments de collection regrouppés selon expression.
Exemple
>> summarize:fruits by:this[1]
[
f =
Array (2 elem.)
m =
Array (3 elem.)
o =
Array (1 elem.)
p =
Array (3 elem.)
]
>> longDescriptionOf:ans
[
f =
{
fraise
framboise
}
m =
{
mirabelle
mûre
myrtille
}
o =
{
orange
}
p =
{
pêche
pomme
poire
}
]
Arbre hiérarchique
treeFrom:collection branch:expression
Retourne un arbre hiérarchique en concaténant les branches retournées par expression.
Lors de la concaténation, les tableaux et dictionnaires sont fusionnés, les nombres additionnés, et les valeurs multiples sont regroupées dans des tableaux.
Exemple
Le but de cet exemple est d'indiquer, pour chaque lettre initiale, les noms de fruits ainsi que leur nombre.
Pour un fruit, une branche est définie par la fiche comme suit:
function Fiche:fruit
lettre = fruit[1] // Première lettre
return [lettre ["Fruit(s)" fruit, ...
"Nombre" 1]]
Ainsi, la fiche correspondant p.ex. à "abricot" est:
>> longDescriptionOf:Fiche:"abricot"
[
a =
[
Fruit(s) =
abricot
Nombre =
1
]
]
L'arbre correspondant à l'ensemble des fruits définis ci-dessus s'obtient tout simplement comme suit:
>> arbre = treeFrom:fruits branch:Fiche:this
>> longDescriptionOf:arbre
[
f =
[
Fruit(s) =
{
fraise
framboise
}
Nombre =
2
]
m =
[
Fruit(s) =
{
mirabelle
mûre
myrtille
}
Nombre =
3
]
o =
[
Fruit(s) =
orange
Nombre =
1
]
p =
[
Fruit(s) =
{
pêche
pomme
poire
}
Nombre =
3
]
]