Aller au contenu

Messages recommandés

Posté(e)

Bonsoir,

 

A la lecture de ce sujet, et en faisant un parallèle avec le code donné pour la fonction *error*. Ai je bien tout compris, si j’écris :

 

Etape 1

 (defun c:cube (/ n)
 (if (setq n (getreal "\nSaisissez un nombre: "))
   (princ
     (strcat (rtos (* n (sqr1 n))) " est son cube!")
   )
 )
 (princ)
)

(defun sqr1 (nbr) (* nbr nbr))

La fonction sqr1 existe en dehors de la commande cube (un peu comme une variable globale),

 

Teste 1 :

_$ (type sqr1)

USUBR

Au risque d’écraser une fonction de même nom, mais ayant une autre fonction pour un autre programme.

 

Etape 2

Le fait de l’inclure dans le même bloc de parenthèse ne changeant rien à l’affaire,

 (defun c:cube (/ n)
 (defun sqr2 (nbr) (* nbr nbr))
 (if (setq n (getreal "\nSaisissez un nombre: "))
   (princ
     (strcat (rtos (* n (sqr2 n))) " est son cube!!")
   )
 )
 (princ)
)

 

Teste 2 :

$ (type sqr2)

USUBR

 

Etape 3

Pour éviter cela je dois la déclarer dans ma fonction principal (au même titre que mes variables) pour ne lui octroyer qu’une existance local.

 (defun c:cube (/ n sqr3)
 (defun sqr3 (nbr) (* nbr nbr))
 (if (setq n (getreal "\nSaisissez un nombre: "))
   (princ
     (strcat (rtos (* n (sqr3 n))) " est son cube!!!")
   )
 )
 (princ)
)

 

Teste 3 :

_$ (type sqr3)

nil

 

Etape 4

Et dans l’hypothèse ou je voudrais en faire une fonction réutilisable (à inclure dans une bibliothèque de fonctions) il serait préférable de la préfixer avec mes initiales un peu comme les fonctions vl-xxx

 (defun bv-sqr (nbr) (* nbr nbr))

Au cas ou d’autre n’aurais pas eu la même délicatesse dans l’écriture de leurs programmes..

 

Bon, je pense avoir bien saisie le principe, en attente d’une confirmation ou complément..

Cordialement

 

(Ps : Je ne vois pas bien la différence d’intérêt entre l’écriture 1 & 2, que je retrouve dans beaucoup de programme)

 

 

[Edité le 8/10/2010 par VDH-Bruno]

Apprendre => Prendre => Rendre

Posté(e)

Ps : Je ne vois pas bien la différence d’intérêt entre l’écriture 1 & 2, que je retrouve dans beaucoup de programme

 

Peut-être tout simplement est-il parfois utile de "se la" déclarer comme dans le 2 pour être certain de bien placer le chargement.

Si tu te crées une application, tu te doutes bien que les fonctions chargées le sont dans un ordre correponsant à l'orde des déclarations. Ainsi en déclarant une sous-fonction au début de la fonction principale l'utilisant on sait où elle est. On sait qu'elle sera chargée d'abord.

 

Franchement, c'est vraiment une question d'organisation.

Ca m'arrive souvent de les mettre là. Et si jamais je constate que l'utilisation est unique, hop, j'enferme en déclarant la fonction en locale.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)

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é