Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com

Accueil

 
4D v19.8
Présentation des collections

Présentation des collections  


 

Les commandes et méthodes du thème Collections créent et travaillent avec des collections.

Les collections sont des listes ordonnées de valeurs de types similaires ou différents (texte, nombre, objet, booléen, collection ou null). Pour manipuler les variables de type Collection vous devez utiliser la notation objet (voir Utiliser la notation objet). Pour des informations complémentaires sur les collections 4D, reportez-vous au paragraphe dans la page RELATE MANY.

Pour accéder à un élément de collection, passez le numéro (l'indice) de l'élément entre crochets :

collectionRef[expression]

Vous pouvez passer toute expression 4D valide qui retourne un nombre entier positif dans expression. Exemples :

 myCollection[5]  //accès au 6e élément de la collection
 myCollection[$var]

Note : N'oubliez pas que la numérotation des éléments de collection débute à 0.

Vous pouvez assigner une valeur à un élément de collection ou lire une valeur d'élément de collection à l'aide de la notation objet :

 myCol[10]:="Mon nouvel élément"
 $valeur:=myCol[0]

Si vous assignez un numéro d'élément plus grand que celui du dernier élément existant dans la collection, la collection est automatiquement redimensionnée et les nouveaux éléments intermédiaires prennent la valeur null :

 C_COLLECTION(myCol)
 myCol:=New collection("A";"B")
 myCol[5]:="Z"
  //myCol[2]=null
  //myCol[3]=null
  //myCol[4]=null

Vous pouvez créer deux types de collections :

  • standard (non partagées), à l'aide de la commande New collection.
    Ces collections peuvent prendre en charge un grand nombre de types de données, y compris les images et les pointeurs. Elles peuvent être modifiées sans contrôle d'accès spécifique.
  • partagées, à l'aide de la commande New shared collection.
    Le contenu de ces collections peut être partagé entre les process, y compris des process (thread) préemptifs. L'accès à ces collections doit être contrôlé via des structures Utiliser...Fin utiliser. Pour plus d'informations, veuillez vous reporter à la page Objets partagés et collections partagées

Les références de collections 4D bénéficient de méthodes spécifiques appelées member methods ou méthodes membres. Grâce à la notation objet (cf. Utiliser la notation objet), ces méthodes sont appliquées sur les références de collections à l'aide de la syntaxe suivante :

{$result:=}myCollection.method( {params} )

A noter que, même si elle n'a pas de paramètres, une méthode membre doit être appelée avec les parenthèses ( ) (opérateur d'exécution de méthode), sinon une erreur de syntaxe est générée.

Par exemple :

 $newCol:=$col.copy() //copie de $col vers $newCol
 $col.push(10;100) //ajout de 10 et 100 à la collection

Certaines méthodes retournent la collection d'origine après modification, de manière à ce que vous puissiez enchaîner les appels dans une même séquence:

 $col:=New collection(5;20)
 $col2:=$col.push(10;100).sort() //$col2=[5,10,20,100]

Attention : Lorsque vous exécutez des méthodes de collection, vous devez utiliser des chemins de propriété conformes ECMA Script, i.e. vous ne pouvez pas utiliser ".", "[ ]" ou d'espace dans les noms de propriétés. Par exemple, comme indiqué dans la section Identifiants de propriétés d'objets, les noms de propriétés tels que $o["My.special.property"] sont acceptés. En revanche, ils ne pourront pas être utilisés avec des méthodes :

 $vmin:=$col.min("My.special.property") //indéfini
 $vmin:=$col.min(["My.special.property"]) //erreur

Plusieurs méthodes de collection admettent un paramètre nommé cheminPropriété. Ce paramètre peut contenir :

  • soit un nom de propriété d'objet, par exemple "nomComplet"
  • soit un chemin de propriété d'objet, c'est-à-dire une séquence hiérarchique de sous-propriétés reliées par des points, par exemple "employé.enfant.prénom".

Par conséquent, lorsqu'un paramètre cheminPropriété est attendu, l'utilisation de noms de propriétés contenant un ou plusieurs "." n'est pas prise en charge car cela empêcherait 4D d'analyser correctement le chemin.

Note : Pour plus d'informations, reportez-vous à la section Identifiants de propriétés d'objets.

 
PROPRIÉTÉS 

Produit : 4D
Thème : Collections

 
PAGE CONTENTS 
 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v19)
4D - Langage ( 4D v19.1)
4D - Langage ( 4D v19.4)
4D - Langage ( 4D v19.5)
4D - Langage ( 4D v19.6)
4D - Langage ( 4D v19.7)
4D - Langage ( 4D v19.8)