Construire dynamiquement le nom d'une fonction AutoLISP

Supposons que vous avez défini deux fonctions : f1 et f2. Vous voulez appeler l'une ou l'autre en vous basant sur le contenu d'une variable a qui contient 1 ou 2.

Il faut d'abord construire le nom de la fonction avec strcat :

(setq function-name (strcat "f" (itoa a)))

Puis il faut convertir la chaîne obtenue en symbole. On peut faire ça avec la fonction atoms-family :

(setq function-symbol (atoms-family 0 (list function-name))

Une fois qu'on a le symbole, on peut exécuter la fonction avec eval :

(eval function-symbol)

Etiquettes:

Ajouter un commentaire