4D v16 R4 introduit un nouveau type de variable appelé Collection. À quoi sont destinées ces variables ? Comme les objets ou les BLOBs, les collections peuvent être utilisées pour contenir presque tous les types de variables comme les textes, les chiffres, les booléens, les objets et même d’autres collections. La bonne nouvelle est que tous les types de variables mentionnés précédemment peuvent être mélangés dans une même collection, alors que les tableaux doivent toujours contenir le même type d’éléments !
Quoi de neuf ?
Deux nouvelles commandes ont été créées (C_COLLECTION et New collection). Le contenu des collections peut être consulté et modifié en utilisant la notation objet. Les collections peuvent être comparées à des tableaux mais elles sont beaucoup plus polyvalentes car elles ne sont pas limitées à un seul type de données.
Les collections peuvent être stringifiées et les chaînes peuvent être analysées pour créer des collections. Pour ce faire, il suffit d’utiliser les commandes existantes JSON Stringify et JSON Parse. Si vous avez l’habitude de manipuler des tableaux JSON, vous constaterez que les collections sont très similaires. Si vous ne l’êtes pas, vous vous y habituerez en très peu de temps.
Deux différences principales sont à noter :
1. Pour accéder aux éléments d’une collection, vous devez utiliser des crochets [ ], et NON des accolades { }.
2. Les éléments d’une collection commencent à l’indice 0. On peut donc accéder au premier élément en écrivant collection[0], ce qui est différent des tableaux dont le premier élément est 1.
D’une part, les tableaux (dont les éléments sont tous du même type) permettent d’optimiser la mémoire, ils sont donc rapides et efficaces. D’autre part, les collections offrent une grande flexibilité. Donc, si la mémoire ou la vitesse est importante, utilisez des tableaux. Si vous voulez coder plus facilement, utilisez les collections. Vous avez maintenant le choix.
En outre, dans la plupart des cas, les collections peuvent être utilisées de la même manière que les autres types de variables dans 4D ! Elles peuvent être envoyées comme paramètres à des méthodes, reçues comme retours de fonction, déclarées comme locales ou globales, etc.
Exemples
Voici une série de petits exemples de la façon dont les collections peuvent être déclarées et utilisées :
C_COLLECTION(myCollection)
col1 := New collection(12;14 ; "zoulou";45)
col2 := New collection(50 ; "bravo" ;col1;Current date)
col3 := New collection(col1;col2)
$obj:=New Object("val" ; "Echo")
col := New collection(12 ; "alpha" ;$obj;True)
vNum :=col[0] // Access first element of the collection
vString :=col[1]
obj :=col[2]
bool :=col[3]
$n:=longueurcol. // This is the way to know the number of items of a collection!
vString :="La collection contient "+String($n)+" items"