|
Lisp at
|
5.1. Une fonction de menu générique
| ||||||||
|
5.1. Une fonction de menu génériqueL'exemple de ce chapitre illustre divers aspects du Lisp dont les fonctions génériques, la manipulation symbolique et l'extension du langage par des macros. STRUCTURE-MENU est une fonction qui prend en argument une instance de structure quelconque et génère un menu de type formulaire permettant de visualiser et de modifier les champs de cette instance de structure (voir la figure de la page suivante). Dans ce chapitre, l'objectif n'est pas de détailler comment cette fonction est programmée, mais d'illustrer certaines techniques de programmation à travers cette fonction et de montrer combien il est simple, pour un programme client, d'utiliser cette fonction. Bien que plus riche, la notion de structure en Lisp est similaire à celle de structure, de record ou d'enregistrement que l'on trouve dans d'autres langages; généralement, les autres termes associés à cette notion sont :
En Lisp, DEFSTRUCT est l'opérateur de définition d'une structure; dans l'exemple ci-dessous, la structure créée a PERSON comme nom et possède 4 champs (NAME, SEX, TITLE et AGE).
Pour créer une instance de cette structure, il suffit de faire appel au constructeur MAKE-PERSON (automatiquement défini par le DEFSTRUCT, lors de la définition de la structure PERSON). L'instance est affectée à la variable PERSON-1 via l'opérateur d'affectation SETF (voir l'annexe 1 pour plus de détails à propos de SETF) :
Une fois la fonction STRUCTURE-MENU programmée, pour faire apparaître le menu-formulaire permettant de voir et de modifier le contenu des 4 champs de l'instance de structure PERSON-1, il suffit d'écrire :
La figure ci-dessous montre un exemple d'interaction de l'utilisateur avec ce menu : l'utilisateur a sélectionné le champ TITLE; une fenêtre de saisie apparaît où il peut introduire une nouvelle valeur pour ce champ, soit Dr. La fonction STRUCTURE-MENU est générique : elle est utilisable pour n'importe quelle instance de n'importe quelle structure. Cela signifie aussi qu'il est possible d'ajouter un champ à la définition de la structure PERSON sans pour autant devoir modifier les programmes qui utilisent le menu en question (le nouveau champ apparaissant automatiquement dans le menu). Commentaires
| ||||||||
|
|||||||||
|
Last update : 04/12/2001 | ||||||||