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 délimitées par des barres verticales 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é, un objet de données dynamiques est une structure de données plus appropriée à utiliser. Une comparaison entre les tableaux et les objets est disponible sur la page d’aide Structures des données.

Faits saillants concernant 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 comme un tableau. Il en va de même pour les tableaux dynamiques.
  • Dans Studio, les index du tableau commencent à 1.

  • Certaines 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 nativement, un tableau de chaînes doit utiliser une barre verticale comme délimiteur.

Essayez-le

Téléchargez le script d’exemples de tableaux et importez-le dans Studio. De nombreux exemples de cette page d’aide sont disponibles dans les actions Snippet du script d’exemple. Vous pouvez ouvrir la fenêtre de l’éditeur d’extraits de code 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 des barres verticales :

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

Créez un tableau dynamique avec la syntaxe suivante :

DYNAMIC <object>

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

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

Pour référencer un élément spécifique d’un tableau de chaînes, utilisez la syntaxe suivante :

<var>[index]

Pour référencer 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 dans le 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 du tableau commencent à 1. Les index doivent être des nombres entiers positifs. Vous devez connaître l’index pour interagir avec un élément spécifique du tableau. Vous pouvez utiliser la fonction indexof() pour déterminer l’index d’un élément, si vous ne le connaissez pas.

Référencer un élément individuel d’un tableau de chaînes

Pour référencer 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 référencer la valeur d’un élément, comme lorsque vous attribuez la valeur à une autre variable.

Par exemple :

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

Dans cet exemple, l’index 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 une barre verticale : 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 référencez 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 que vous référencez 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 qui attend un nombre, le script se comporte comme si la valeur était zéro.

Déterminer le prochain index non utilisé

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 également utiliser la fonction count().

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 barres verticales en utilisant une seule une barre verticale (|) entre chaque élément. Cet exemple montre le tableau du premier exemple défini comme une chaîne délimitée par des barres verticales. Lorsque vous créez un tableau de chaînes délimitées par des barres verticales, 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 variable tableau de chaînes. Cependant, il est utile de l’utiliser. L’inclusion de ASSIGN permet de localiser facilement dans votre script l’endroit où vous avez introduit la variable le tableau à l’aide de la recherche avancée. Sans ASSIGN, vous devez rechercher le nom de la variable du tableau. Les résultats de la recherche contiendront toutes les références à la variable au tableau dans votre script. Lorsque vous incluez ASSIGN dans votre terme de recherche, la recherche ne renvoie que les résultats où la variable est explicitement assigné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 d’un 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 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 afficher le contenu des objets dynamiques et du tableau de chaînes dans l’onglet Variables sous forme d’arborescence de la fenêtre de l’éditeur d’extraits de code 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 lors de la connexion à 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 emplacement

Vous pouvez référencer un élément d’un tableau de chaînes 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 référencer des index spécifiques sans coder en dur 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. Cela démontre également l’utilisation de la fonction count() pour renvoyer 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 accolades 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 déclaration 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 l’emprunte lorsque cette erreur se produit.

Utiliser FOREACH avec un tableau de chaînes

Vous pouvez utiliser une instruction FOREACH avec des tableaux de chaînes pour énumérer 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 courant que la boucle FOREACH est en train de traiter. Le script met à jour aName avec le contenu de elem. À la fin de chaque itération, elem et aName contiennent la même valeur, mais au milieu de l’itération, elem contient la nouvelle valeur et aName l’ancienne valeur (ou aucune valeur, dans le cas du début de la première itération).

Vous pouvez le voir clairement dans l’extrait de code FOREACH Loop with a String Array du script d’exemples de tableaux. Pour voir comment les variables sont mises à jour, parcourez l’extrait de code ligne par ligne.

Utiliser FOR avec un tableau de chaînes

Vous pouvez utiliser une boucle FOR avec un tableau de chaînes pour parcourir 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 après avoir atteint la fin du tableau de chaînes, comme indiqué par heroes.count.

Vous pouvez voir cette boucle dans l’extrait de code FOR Loop with a String Array du script d’exemples de tableaux.

Utiliser des fonctions avec des tableaux

Vous pouvez utiliser des fonctions avec les tableaux. Utilisez le nom du tableau avec l’index entre crochets, puis ajoutez le nom de la fonction en utilisant la notation par points. C’est ce que montre l’exemple suivant :


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 souhaitez utiliser fonctionne.

Vous pouvez utiliser des fonctions avec des tableaux dynamiques. Cependant, en fonction du tableau dynamique spécifique et de ce qu’il contient, vous devrez peut-être utiliser une$value de propriété d’objet spéciale. 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 fonctionner avec des tableaux. Vous pouvez tester ces fonctions dans l’extrait de code Functions and Arrays du script d’exemples de tableaux.

Fonction

Description

count()

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

index(indexValue)

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

indexof(text)

Renvoie la position du caractère text spécifié dans le contenu d’une variable.

size()

Renvoie le nombre d’éléments d’un tableau.

split(delimiter)

Convertit le contenu d’une variable en une chaîne délimitée par des barres verticales qui peut être traitée comme un tableau. Remplace le delimiter existant et spécifié par une barre verticale.