Bonsoir,
Pour déclarer une liste vide :
Cela semble correct pour ta liste globale que j'appelle ListeN1 car elle contient de 0 à N éléments, tous identiques.
Comme tu appelles tous les niveaux avec item 1, item 2,... il est un peu difficile de comprendre ton explication, mais je vais supposer que pour le niveau en dessous, ListeN2, on a les règles suivantes:
- le premier élément est toujours une string non vide,
- le second élément est lui même une liste (ListeN3), éventuellement vide,
- le troisième élément est aussi une liste (ListeN3), éventuellement vide,
- le quatrième élément est aussi une liste (ListeN3), éventuellement vide,
- tu souhaites toujours identifier directement le second ou le 3ème ou 4ème éléments, même si l'un d'entre eux est vide.
Dans ce cas, tu dois utiliser un type de liste particulier qui s'appelle un record. Cela ressemble à une liste, mais les 4 éléments ont des noms.
Par exemple:
set ListeN2 to {maString:"", it1:{}, it2:{}, it3:{}}
Ce faisant, tu indiques à Applescript que tu considère toujours que cette "liste" à 4 éléments, même si l'un ou plusieurs d'entre eux sont vides.
Chaque élément s'adresse par son nom maString, it1, it2, it3 ou encore it4 (je te conseille vivement de leur donner des noms plus représentatifs !).
Exemple d'utilisation:
1 2 3 4 5
| set maString of ListeN2 to "Toto"
set it1 of ListeN2 to {"sous_item_11", "sous_item_12", "sous_item_13"}
set it3 of ListeN2 to {"sous_item_31", "sous_item_32", "sous_item_33"}
--> ListeN2 : {maString"Toto", it1:{"sous_item_11", "sous_item_12", "sous_item_13"}, it2:{}, it3:{"sous_item_31", "sous_item_32", "sous_item_33"}} |
Dans cet exemple, j'ai volontairement laissé vide it2, mais comme c'est un record, il existe bien: c'est une liste vide !
En règle générale, si les éléments de la liste sont indifférents, tu utilises bien une liste.
Si, par contre, tu souhaites les distinguer (l'item 2 net peut être confondu avec le 3) alors il faut prendre un record.
J'ajoute que, comme les listes, tu peux parfaitement utiliser des records de records de records...
D'où la nécessite de donner des noms bien clairs à chaque élément du record.
L'inconvénient du record tient justement au fait que les items ne sont pas identiques en signification...donc on ne peut les atteindre avec un indice (item x of liste).
Je pense que tes niveaux 1 et 3 ressemblent à des listes, mais ton niveau 2 ressemble à un record.
Cordialement
Partager