Inforordinateurmatique

Aide aux divers cours ou à votre activité - Bruno GADRAT

Les listes en AppleScript

Pour laisser plus de temps au paysage et moins à l'informatique

Travailler avec des listes en AppleScript

Des listes, attention aux erreurs de type des listes pas des chaînes

Les variables peuvent être de divers types: des nombres, des chaînes de caractères et ... des listes. Ce qu'il y a de bien avec les listes ce que ça peut être des listes de nombres, des listes de chaînes des listes de listes et des listes de tout ça mélangé. Vous n'avez pas trop intérêt à faire trop de mélange, si vous voulez éviter les erreurs de type. Éviter les erreurs de type est certainement la chose la plus utile à maîtriser aussi bien en informatique qu'en architecture de paysage.

Les nombres s'écrivent directement, les chaînes sont "entre guillemets" et les listes sont {entre accolades}. Les items de la liste sont séparés par des virgules.

set unNombre to 12
set uneChaine to "ma chaîne"
set uneListe to {unNombre, uneChaine, 3, "quatre"}

On peut aussi y mettre des chemins d'accès aux fichiers. Attention la commande d'affichage ne peut écrire que des nombres ou des textes et pas des listes de chemins de fichiers.

set dossierchoisi to choose folder with prompt "Quel dossier faut-il prendre ?"
tell application "Finder"
end tell
display dialog (count listeDesFichiers)
display dialog (last item of listeDesFichiers as text)

Manipuler les listes

Enlever un bout, en ajouter un autre quelques opérations usuelles

-- déclarer une liste
set uneListe to {1, 2, 3}
-- display dialog uneListe -- provoque une erreur de type chaîne demandée liste trouvée
display dialog ("La liste: " & uneListe as string)

-- ajouter un élément à la liste
set uneListe to 0 & uneListe & 4
display dialog ("La liste augmentée: " & uneListe as string)

-- extraire une partie de la liste
set le3emeElement to item 3 of uneListe
set Elements2a4 to items 2 thru 4 of uneListe
display dialog ("La liste:" & uneListe & "
Le troisième élément: " & item 3 of uneListe & "
Les éléments 2 à 4 de la liste: " & items 2 thru 4 of uneListe as string)

-- prendre la liste sans le premier élément
set finDeLaListe to rest of uneListe
display dialog (("La liste: " & uneListe as string) & "
rest of la liste: " & (rest of uneListe) as string)

-- retourner une liste
set listeRetournee to reverse of uneListe as string
display dialog ("Liste retournée: " & reverse of uneListe as string)

-- faire une liste sans le 4eme élément
set listeAmputee to (items 1 thru 3 of uneListe) & (items 5 thru (count of uneListe) of uneListe)
display dialog (("La liste originale: " & uneListe as string) & "
La liste amputée du 4eme élément: " & listeAmputee)

-- faire une liste en retirant un élément connu au milieu de la liste
set elementretire to 2
repeat with i from 1 to count uneListe
end repeat
display dialog (("La liste originale: " & uneListe as string) & "
La liste amputée du " & elementretire & ": " & listeAmputee2)

Vous pouvez charger le code de ces exemples soit en copiant à l'écran soit par ce fichier AppleScript-listes.scpt.zip.

Fonction AppleScript qui enlève un élément d'une liste

Effet de bord

Vous avez remarqué que dans une liste, il y a des bouts et que c'est une grande source d'erreurs. Une fonction peut régler le problème.

-- la liste initiale et l'appel de la fonction
set listeOriginale to {"abricot ", "brugnon ", "cerise ", "datte "}
set listeAmputee to enleveDeLaListe(listeOriginale, 2)
display dialog (("liste originale:
" & listeOriginale as string) & "
liste amputée:
" & listeAmputee as string)

-- fonction qui enlève un élément d'une liste en AppleScript
on enleveDeLaListe(uneListe, positionElementAEnlever)
end enleveDeLaListe

 

Quelques références

pub