-
Une liste vide s'écrit simplement avec un couple d'accolades :
set the_list to {}
-
Pour ajouter un élément unique à une list, n'utilisez pas l'opérateur de concaténation mais plutôt les propriétés spéciales end et beginning :
set the_list to {}
set end of the_list to pi / 10
set end of the_list to 1.0
set beginning of the_list to 0.0
the_list
-- {0.0, 0.314159265359, 1.0}
-
Pour fusionner deux lists, utilisez l'opérateur de concaténation & :
set the_list to the_list & {2.0, 3.0}
the_list
-- {0.0, 0.314159265359, 1.0, 2.0, 3.0}
-
Pour fabriquer une list à partir d'une string, utilisez un fonctionnalité particulière d'AppleScript, text items. text items transforme une string en une liste de strings conformément à la constante AppleScript text item delimiters.
set the_string to "1.0, 2.0, 3.0"
set text item delimiters to ", "
set the_list to text items of the_string
-- {"1.0", "2.0", "3.0"}
Vous n'avez toujours pas une liste de nombres, seulement une liste de strings. Pour en faire une liste de nombre, appliquez un opérateur neutre, par exemple en ajoutant 0 :
set the_list to addlist the_list with 0
-- {1.0, 2.0, 3.0}
-
Lorsque le text item delimiters ne suffit pas, il faut peut-être utiliser une expression régulière. find text permet d'utiliser les expressions régulières et peut retourner des listes (en utilisant l'option all occurrences).
set the_string to "january: 82.4, february: 82.5, march: -132"
set the_list to find text "-?[0-9]+(\\.[0-9])?" in the_string with string result, regexp and all occurrences
-- {"82.4", "82.5", "-132"}
set the_list to addlist the_list with 0
-- {82.4, 82.5, -132.0}
-
Gardez à l'esprit qu'AppleScript possède deux opérateurs d'affectation : set et copy. Appliqué à des types complexes (tels que des listes), copy clone véritablement les données, alors que set ne stocke qu'une référence. Lorsque vous voulez vraiment une copie de vos données, utilisez copy.
set the_set_list to the_list -- get a reference
copy the_list to the_copy_list -- copy data
set item 3 of the_list to 10.0 -- change original list
get item 3 of the_set_list
-- 10.0
get item 3 of the_copy_list
-- 1
|