Ces extensions ajoutent deux nouvelles structures de données à NetLogo : les tableaux (array) et les tables de hachage (table).
En général, tout ce que vous pouvez faire avec une tableau ou une table de hachage peut aussi se faire avec une simple liste. Mais vous pouvez envisager de la remplacer par un tableau ou une table de hachage pour des raisons de vitesse d'exécution du programme. Ces trois structures de données (liste, tableau et table de hachage) affichent des performances différentes, ce qui permet, en utilisant la structure de données adéquate, de créer un modèle qui tourne plus rapidement.
Les tableaux sont pratiques quand on a besoin d'une collection de données de taille fixe. Ils permettent d'accéder à, ou de lire très rapidement n'importe quel élément si vous connaissez sa position dans le tableau.
Les tables de hachage sont utiles quand il faut associer des valeurs à d'autres valeurs. Vous pouvez par exemple construire une table de mots avec leurs définitions puis rechercher ensuite la définition de n'importe quel mot. Ici, les mots sont les « clés » de la table. La recherche et la récupération de n'importe quelle clé de la table est rapide et facile, ce qui n'est pas le cas des définitions.
Les deux extensions sont déjà installées dans NetLogo.
Pour utiliser l'extension array dans votre modèle, ajoutez la ligne suivante au début du code dans le panneau "Procedures" :
extensions [array]
Pour utiliser l'extension table dans votre modèle, ajoutez la ligne suivante au début du code dans le panneau "Procedures" :
extensions [table]
Vous pouvez même utiliser les deux extensions dans le même modèle, comme suit :
extensions [array table]
Si le modèle utilise d'autres extensions, son code possède déjà
une ligne
extensions
, il suffit simplement d'ajouter
array et/ou table dans la liste des extensions.
Pour plus d'informations concernant les extensions NetLogo, voir le Guide des extensions.
Les clés des tables de hachage ne peuvent être que des chaînes de caractères, des nombres, des booléens ou des listes. (Les listes peuvent être des listes imbriquées aussi longtemps que tous leurs éléments sont des chaînes de caractères, des nombres ou des booléens.)
let a array:from-list n-values 5 [0] print a => {{array: 0 0 0 0 0}} print array:length a => 5 foreach n-values 5 [?] [ array:set a ? ? * ? ] print a => {{array: 0 1 4 9 16}} print array:item a 0 => 0 print array:item a 3 => 9 array:set a 3 50 print a => {{array: 0 1 4 50 16}}
let dict table:make table:put dict "turtle" "cute" table:put dict "bunny" "cutest" print dict => {{table: "turtle" -> "cute", "bunny" -> "cutest" }} print table:length dict => 2 print table:get dict "turtle" => "cute" print table:get dict "leopard" => 0 print table:keys dict => ["turtle" "bunny"]
Quand vous exportez un monde NetLogo (en utilisant la commande export-world ou la commande de menu "Export World"), les tableaux et les tables de hachage sont exportés « par valeur ». Ce qui signifie que si vous avez la même table ou le même tableau stocké à plus d'un endroit, il y aura des tableaux ou des tables distinctes aux endroits où apparaissait la table ou le tableau original quand elle ou il sera exporté puis ré-importé. Ces duplicata contiennent initialement les mêmes valeurs, mais si l'un d'eux est modifié par le suite, l'autre ne le sera pas.
array:from-list array:item array:set array:length array:to-list
Retourne un nouveau tableau contenant les mêmes éléments, dans le même ordre, que dans la liste list donnée en entrée.
Retourne l'élément numéro index du tableau table donné (les numéros d'index vont de 0 à nombre d'éléments du tableau moins un).
Donne value à l'élément numéro index du tableau table donné (les numéros d'index vont de zéro au nombre d'éléments du tableau moins un).
Notez que contrairement à la primitive replace-item pour les listes, cette commande ne crée pas de nouveau tableau. C'est le tableau existant qui est modifié.
Retourne la longueur du tableau table donné, c'est-à-dire le nombre d'éléments contenus dans le tableau.
Retourne une nouvelle liste contenant les mêmes éléments, dans le même ordre, que le tableau table donné.
table:clear table:from-list table:get table:has-key? table:keys table:length table:make table:put table:remove table:to-list
Supprime toutes les paires clé-valeur de la table.
Retourne une nouvelle table formée des éléments de list. L'entrée doit être une liste de listes contenant deux éléments (ou paires). Le premier élément de la paire est la clé et le second élément est la valeur qui lui est associée.
Retourne la valeur associée à la clé key qui est stockée dans la table. Génère une erreur si table n'a pas de paire correspondant à la clé fournie.
Retourne true (vrai) si la clé key possède une entrée (une paire correspondante dans la table.
Retourne une liste de toutes les clés de la table.
Retourne le nombre de paires d'éléments dans la table.
Retourne une nouvelle table vide.
Place la clé key et sa valeur associée value dans la table et les met en correspondance. Si table contient déjà une entrée pour la clé key donnée, sa valeur est remplacée par value.
Supprime la clé key et sa valeur dans la table.
Retourne une liste formée des éléments de la table table. Les éléments de la liste sont des listes à deux éléments (ou paires). Le premier élément de la paire est la clé et le second est la valeur qui lui est associée.