Aller au contenu

(defun dans (defun ...


Messages recommandés

Posté(e)

Salut,

dernièrement, j'ai remarqué que la "mode" ( ;) ) était au routine imbriquant plusieurs (defun ...

Je me demandais ce que cela amenait par rapport à des routines ou sous-routine détaché totalement. A moins que cela ne soit que pour une raison "ponctuel" ???

 

merci.

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

C'est pas une mode, c'est de l'organisation, notamment pour les gestions d'erreurs.

 

La règle serait : quand une routine n'est pas nécessaire ailleurs, on peut l'enfermer.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Juste pour préciser ce que dit Tramber, ce n'est pas tant d'imbriquer un defun dans un autre qui peut être judicieux, mais de déclarer le defun imbriqué comme variable locale.

De cette façon la définition n'est valable qu'à l'intérieur du defun "parent" et retourne à nil à la fin de la fonction ce qui, outre l'économie de mémoire, évite tout risque de conflit avec un autre defun du même nom.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Et je dirais même plus ;)

Cela permet d'avoir une fonction avec ses sous fonctions propres qui évitent tout confilt potentiel, de faire plus propre.

De plus, si on déclare une sous fonction comme une variable local, elle ne restera pas en mémoire.

Comme test, tu peux faire

(setq memo (atoms-family 1))

tu lances un/des lisps puis ensuite

(vl-remove-if '(lambda (x) (member x memo)) (atoms-family 1))

ce qui te permet de voir quelles sont les variables qui ont été oubliées d'être déclarées en local ainsi que les nouvelle fonctionnalitées.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Merci.

 

Patrick_35 : ton test vient de me révéler une chose :.... j'ai un sacré boulot de nettoyage à faire !!! :(

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité