Structures

Une structure est un conteneur dont les éléments sont nommés et non pas repérés par une position dans le cas des tableaux.

La création d'une structure en Common Lisp est faite en deux étapes.

D'abord, un type de structure est créé, établissant ainsi le nom du type de la structure et le nom de chaque créneau. Les créneaux d'une structure correspondent aux champs d'une structure dans un langage comme C. Cette création est faite à l'aide de la macro defstruct.

Une fois que le type de la structure existe, on peut créer des instances de cette structure.

Lors de la définition du type de la structure, des fonctions pour créer des instances de celle-ci et pour accéder aux créneaux sont créées automatiquement. Exemple :

* (defstruct grape name color)

GRAPE
* (defparameter *g* (make-grape :name "merlot" :color "red"))

*G*
* *g*

#S(GRAPE :NAME "merlot" :COLOR "red")
* (grape-name *g*)

"merlot"
* (grape-color *g*)

"red"
* (setf (grape-name *g*) "petit verdot")

"petit verdot"
* *g*

#S(GRAPE :NAME "petit verdot" :COLOR "red")
*

On remarque que le nom de la fonction qui permet d'accéder à un créneau est composé du nom du type de la structure et du nom du créneau. La macro defstruct accepte un grand nombre de paramètres mots-clés qui modifient ce comportement. Il est également possible de donner une valeur par défaut à un créneau.

Irene DURAND
2011-10-14