Tableaux

Un tableau est une structure de données qui contient un groupe de valeurs. Les tableaux sont utiles lorsque vous disposez d'une liste d'éléments dont le type est similaire. Par exemple, des listes d'indicatifs régionaux, de numéros de téléphone ou de noms de clients.

Il existe deux types de tableaux que vous pouvez utiliser dans Studio :

  • Tableaux de chaînes : chaînes de caractères délimitées par un trait vertical dans une variable. Ils contiennent des valeurs de type chaîne, qui peuvent être composées de caractères alphanumériques.
  • Tableaux dynamiques : tableaux stockés dans des objets de données dynamiques.

Si vous avez une liste dont les données sont tous les différents types d'informations sur une seule entité, il est plus approprié d’utiliser une structure de données de type objets de données dynamiques. Une comparaison entre les tableaux et les objets est disponible sur la page d'aide Structures de données .

Points à retenir sur les tableaux

  • Un tableau doit comporter au moins deux éléments. Un tableau ne comportant qu'un seul élément semble être une variable ordinaire. Il s'agit toujours d'un tableau et vous pouvez l'appeler tableau. Il en va de même pour les tableaux dynamiques.
  • Dans Studio, les index des tableaux commencent à 1.

  • Quelques fonctions sont disponibles pour une utilisation avec des tableaux, telles que index() et indexof().

  • Vous pouvez utiliser n'importe quel délimiteur avec les tableaux de chaînes. Cependant, pour être lu en mode natif, un tableau de chaînes doit utiliser un trait vertical comme délimiteur.

Essayez.

Téléchargez le script d’exemple et importez-le dans Studio. De nombreux exemples de cette page d'aide sont disponibles dans les actions Snippet de l’exemple de script. Vous pouvez ouvrir la fenêtre Éditeur de snippets et lancer le débogueur pour voir l'exemple.

Résumé de la syntaxe des tableaux

Créez un tableau de chaînes avec l'une des syntaxes suivantes.

Attribuez une valeur à chaque élément en utilisant son index :

ASSIGN <var>[<index1>] = "<value1>"

ASSIGN <var>[<index2>] = "<value2>"

ASSIGN <var>[<index3>] = "<value3>"

Affectez toutes les valeurs d'un élément à une variable dans une chaîne délimitée par un trait vertical :

ASSIGN <var> = "<value1> | <value2> | <value3>"

Créez un tableau dynamique avec l'une des syntaxes suivantes :

DYNAMIC <object>

ASSIGN <object>.<member>[<index>].<sub-member>= "value"

D'autres formes de tableaux dynamiques sont prises en charge.

Pour faire référence à un élément spécifique d'un tableau de chaînes, utilisez la syntaxe suivante :

<var>[index]

Pour faire référence à un élément spécifique d'un tableau dynamique, utilisez la syntaxe suivante :

ASSIGN <var> = <object>.<member>[<index>].<arrayElement>

Éléments et index

Les valeurs contenues dans un tableau sont appelées « éléments ». Le script garde en mémoire l'ordre des éléments du tableau. Chaque élément d'un tableau possède un identifiant numérique, appelé « numéro d'index ». L'index est attribué automatiquement à chaque élément en fonction de sa position dans le tableau. Si vous réorganisez, ajoutez ou supprimez des éléments, leurs index peuvent changer.

Dans Studio, les index des tableaux commencent à 1. Les index doivent être des nombres entiers positifs. Vous devez connaître l'index d’un élément spécifique du tableau pour pouvoir interagir avec lui. Vous pouvez utiliser la fonction indexof() pour déterminer l'index d'un élément si vous ne le connaissez pas.

Référence à un élément individuel d'un tableau de chaînes

Pour faire référence à un élément individuel d'un tableau de chaînes, utilisez la syntaxe suivante  : <arrayElement>[<index>]. Vous pouvez utiliser cette syntaxe de part et d'autre du signe égal. Par exemple, vous pouvez l'utiliser pour attribuer une valeur à un élément ou pour faire référence à la valeur d'un élément, comme lors de l’attribution de la valeur à une autre variable.

Par exemple :

ASSIGN heroes[1] = "Beowulf"
ASSIGN heroes[2] = "Sir Gawain" 
ASSIGN heroes[3] = "Byrhtnoth"

Dans cet exemple, l'indice de Beowulf est 1, celui de Sir Gawain est 2 et celui de Byrtnoth est 3. Ces éléments ont les mêmes index lorsque l'on examine le tableau au format délimité par un trait vertical : name = "Beowulf|Sir Gawain|Byrhtnoth". Pour déterminer les index d'un tableau dans ce format, comptez les éléments de gauche à droite, en commençant par 1.

Les index sont remplis dans l'ordre numérique

Les index sont remplis un par un dans l'ordre numérique. Si vous faites référence à un index qui n'existe pas encore dans le tableau, le script le crée et il sera vide, à moins que vous ne lui attribuiez une valeur. Le script crée tous les index qui n'existent pas entre celui auquel vous faites référence et l'avant-dernier élément du tableau. Les éléments que le script ajoute pour remplir les index sont vides. Par exemple :

ASSIGN heroes = "Beowulf|Sir Gawain|Byrhtnoth" 
ASSIGN heroes[6] = "Lancelot"

Le tableau résultant est heroes = "Beowulf|Sir Gawain|Byrhtnoth|||Lancelot". Le script a ajouté des éléments pour les index 4 et 5, mais comme aucune valeur ne leur a été attribuée, ils sont vides.

De même, si vous tentez d'extraire une valeur d'un élément qui n'existe pas, cet élément est créé. Tous les éléments situés entre celui que vous avez tenté de référencer et l'avant-dernier élément sont également créés et seront vides.

Si un élément de tableau vide est référencé dans un contexte attendant un nombre, le script se comportera comme si la valeur était zéro.

Détermination du prochain index inutilisé

Pour éviter de créer des éléments vides inutiles dans un tableau, vous pouvez déterminer le prochain index inutilisé. Vous devez compter les éléments du tableau, puis ajouter 1 à ce nombre. Vous obtenez ainsi le numéro d'index ouvert suivant.

Pour ce faire, utilisez la fonction size(). Par exemple :

ASSIGN heroes = "Beowulf|Sir Gawain|Byrhtnoth"  
ASSIGN nextIndex = heroes.size() + 1
ASSIGN heroes[nextIndex] = Roland

Dans cet exemple, heroes.size() renvoie le nombre d'éléments du tableau de noms. La valeur de totalNames est 3. En y ajoutant un et en utilisant la variable nextIndex à la place du numéro d'index, vous pouvez ajouter un élément au tableau.

Vous pouvez aussi utiliser count() la fonction.

Tableaux de chaînes

Les tableaux de chaînes peuvent être définis de deux manières. La première consiste à nommer explicitement chaque élément individuellement. L'exemple suivant montre un tableau de chaînes contenant des valeurs de texte définies élément par élément.

ASSIGN heroes[1] = "Beowulf"
ASSIGN heroes[2] = "Sir Gawain" 
ASSIGN heroes[3] = "Byrhtnoth"

Le nombre entre crochets après le nom du tableau est le numéro d'index de l'élément. Il s'agit de l'identifiant de chaque élément.

La deuxième façon de définir un tableau de chaînes est d'utiliser une chaîne délimitée par des traits verticaux, en utilisant un seul caractère de trait vertical (|) entre chaque élément. Cet exemple montre le tableau du premier exemple défini comme une chaîne délimitée par un trait vertical. Lorsque vous créez un tableau de chaînes délimité par un trait vertical, les valeurs à droite de l'instruction doivent être placées entre guillemets.

ASSIGN heroes = "Beowulf|Sir Gawain|Byrhtnoth"

Il n'y a pas de différence entre les fonctions et vous pouvez les utiliser de manière interchangeable. Les deux méthodes de définition du tableau de chaînes produisent le même résultat, une variable qui contient un tableau d'éléments.

Il n'est pas nécessaire d'utiliser le mot-clé ASSIGN lors de la déclaration d'une ou d'un tableau de chaînes. Il peut toutefois s’avérer utile. L'inclusion d’ASSIGN permet de localiser facilement, à l'aide de la recherche avancée, l'endroit de votre script où vous avez introduit la variable . Sans ASSIGN, vous devez rechercher le nom de la variable . Les résultats de la recherche contiendront toutes les références à la variable dans votre script. Lorsque vous incluez ASSIGN dans votre mot-clé, la recherche ne renvoie que les résultats où la variable est explicitement attribuée. Pour déclarer une variable sans ASSIGN, utilisez la syntaxe suivante : <name> = "<value>".

Tableaux dynamiques

Les tableaux dynamiques peuvent prendre plusieurs formes :

  • L'objet de données dynamiques contient un tableau. Chaque élément du tableau est également un membre d'un objet.

    DYNAMIC beowulfLocations 
    ASSIGN beowulfLocations[1] = "Land of the Geats"
    ASSIGN beowulfLocations[2] = "Heorot" 
    ASSIGN beowulfLocations[3] = "Earnanæs"
  • L'objet dynamique contient un membre qui contient un tableau. Les autres membres de l'objet peuvent contenir des chaînes de caractères ou des valeurs numériques, ou encore d'autres tableaux.

    DYNAMIC beowulfCharacteristics 
    ASSIGN beowulfCharacteristics.foe[1].characteristics[1] = "Grendel"
    ASSIGN beowulfCharacteristics.foe[1].characteristics[2] = "son of Cain"
    ASSIGN beowulfCharacteristics.foe[2] = $"Grendel\'s mother" 
    ASSIGN beowulfCharacteristics.foe[3] = "Dragon"
  • Un tableau de chaînes contient des éléments qui contiennent chacun un objet de données dynamiques.

    DYNAMIC epicPoems
    ASSIGN epicPoems.poemName = "Beowulf"
    DYNAMIC heroes 
    ASSIGN heroes.heroName = "Beowulf"
    DYNAMIC monsters
    ASSIGN monsters.monsterName = "Grendel"
    ASSIGN oldEnglish[1] = epicPoems
    ASSIGN oldEnglish[2] = heroes
    ASSIGN oldEnglish[3] = monsters

    Vous pouvez voir le contenu des objets dynamiques et du tableau de chaînes dans l'onglet Variables en arborescence de la fenêtre Éditeur de snippets lorsque vous exécutez le débogueur.

    Ce type de tableau dynamique ne peut pas être utilisé lorsque votre script doit fonctionner avec d'autres systèmes, par exemple lorsque vous vous connectez à des API. Les données contenues dans le tableau de chaînes ne peuvent pas être sérialisées ou converties en chaînes JSON ou XML.

Référencement d'un élément de tableau par son emplacement

Vous pouvez faire référence à un élément d'une chaîne ou d'un tableau dynamique en utilisant son emplacement dans le tableau, spécifié par son index. Par exemple :

ASSIGN heroes = "Beowulf|Sir Gawain|Byrhtnoth"
ASSIGN currentName = heroes[2]

La valeur de currentName est Sir Gawain.

Vous pouvez utiliser une variable à la place du numéro d'index de part et d'autre du signe égal dans une instruction ASSIGN. Cela vous permet de faire référence à des index spécifiques sans figer l'index dans le script. Par exemple :

ASSIGN heroes = "Beowulf|Sir Gawain|Byrhtnoth"
ASSIGN location = 2
ASSIGN currentHero = heroes[location]
ASSIGN nextIndex = heroes.count() + 1
ASSIGN heroes[nextIndex] = "Roland"

La valeur de currentHero dans cet exemple est Sir Gawain. Les deux dernières lignes de l'exemple ci-dessus montrent l'utilisation d'une variable comme index du côté gauche de l'instruction ASSIGN. Il montre également comment utiliser la fonction count() pour obtenir le nombre d'éléments du tableau. Cette information est utilisée pour ajouter un nouvel élément dans le prochain index vide.

Lorsque vous utilisez une variable pour le numéro d'index, il n'est pas nécessaire d'utiliser des parenthèses autour du nom de la variable. Le script attend une valeur numérique entre les crochets dans le nom du tableau. Il suppose que tout ce qui n'est pas un nombre est une variable, et il recherche donc une variable portant ce nom. Il doit y avoir une instruction de variable correspondante dans laquelle vous attribuez une valeur numérique. S'il n'y en a pas, l'erreur suivante se produit :

_ERR=In Snippet line 12: Array index must be >= 1.

Si la branche Error de l'action Snippet est connectée, le script la suit lorsque cette erreur se produit.

Utilisation de FOREACH avec un tableau de chaînes

Vous pouvez utiliser une instruction FOREACH avec des tableaux de chaînes pour faire défiler chaque élément.

ASSIGN heroes = "Beowulf|Sir Gawain|Byrhtnoth|Lancelot"
 FOREACH elem IN heroes 
{
   ASSIGN aName = elem 
}

Dans cet exemple, elem et aName sont mis à jour à chaque itération. La variable elem contient l'élément en cours de traitement par la boucle FOREACH. Le script met à jour aName avec le contenu de elem. À la fin de chaque itération, elem et aName ont la même valeur, mais au milieu de l'itération, elem a la nouvelle valeur et aName l'ancienne (ou aucune valeur, dans le cas du début de la première itération).

Vous pouvez le voir clairement dans le snippet FOREACH Loop with a String Array du script Exemples de tableaux. Pour voir comment les variables sont mises à jour, faites défiler le snippet ligne par ligne.

Utilisation de FOR avec un tableau de chaînes

Vous pouvez utiliser une boucle FOR avec un tableau de chaînes pour faire défiler le tableau et effectuer une action définie un certain nombre de fois.

ASSIGN heroes = "Beowulf|Sir Gawain|Byrhtnoth|Lancelot"
FOR i = 1 TO heroes.count 
   {    
      item = "{heroes[i]}" 
   } 
        

Le résultat de cet exemple est que Item est mis à jour à chaque itération de la boucle FOR avec le contenu du tableau heroes à l'emplacement de l'index spécifié par la valeur de i. La boucle FOR arrête l'itération lorsque la fin du tableau de chaînes est atteinte, comme indiqué par heroes.count.

Vous pouvez voir cette boucle dans le snippet FOR Loop with a String Arraydu script Exemples de tableaux.

Utilisation de fonctions avec des tableaux

Vous pouvez utiliser des fonctions avec des tableaux. Utilisez le nom du tableau avec l'index entre crochets, puis ajoutez le nom de la fonction en utilisant la notation par points. L’exemple suivante illustre ce fonctionnement :


ASSIGN heroes = "Beowulf|Sir Gawain|Byrhtnoth"
ASSIGN miniHero = "{heroes[2].lower}"
ASSIGN yellyHero = "{heroes[2].upper}"

Les résultats de cet exemple sont miniHero = sir gawain et yellyHero = SIR GAWAIN.

Toutes les fonctions ne fonctionnent pas avec tous les tableaux. Certaines ne fonctionnent qu'avec certains types de valeurs. Vérifiez les types avec lesquels la fonction que vous voulez utiliser fonctionne.

Vous pouvez utiliser des fonctions avec des tableaux dynamiques. Toutefois, en fonction du tableau dynamique spécifique et de ce qu'il contient, il peut être nécessaire d'utiliser une propriété d'objet spéciale : .$value. Certaines fonctions ne fonctionnent pas sur un objet entier. Par exemple, vous ne pouvez pas utiliser la fonction lower() sur un tableau d'objets. Le script ignorerait la fonction si vous essayiez de le faire. Dans ces cas, vous devez appliquer des solutions de contournement. Par exemple, vous pouvez copier des valeurs spécifiques des objets du tableau dans une variable distincte. Vous pouvez ensuite utiliser lower() sur le contenu de la variable et, si nécessaire, recopier la valeur convertie dans l'objet.

Les fonctions du tableau suivant sont spécialement conçues pour travailler avec des tableaux. Vous pouvez tester ces fonctions dans le snippet Functions and Arraysdu script Exemples de tableaux.

Fonction

Description

count()

Renvoie le nombre d'éléments dans un tableau ou un objet.

index(indexValue)

Renvoie l’élément du tableau à partir du contenu de la variable en fonction de la indexValue spécifiée.

indexof(text)

Renvoie la position du text spécifié dans le contenu d'une variable.

size()

Renvoie le nombre d'éléments dans un tableau.

split(delimiter)

Convertit le contenu de la variable en une chaîne délimitée par des barres verticales qui peut être traitée comme un tableau. Remplace la delimiter spécifiée existante par un caractère de trait vertical.