DenisHen Posté(e) le 6 juin 2016 Posté(e) le 6 juin 2016 Bonjour à tous. Voilà, je vois souvent les pros du lisp placer des setq dans des if Perso, j'ai "appris" comme-ça : (setq ech (vlax-ldata-get "DenisH" "Ech")) (if ech (princ "\nEchelle connue) (princ "\nEchelle inconnue) ) Mais je vois souvent des trucs comme :(if (setq ech (vlax-ldata-get "DenisH" "Ech")) (princ "\nEchelle connue) (princ "\nEchelle inconnue) ) Y-a-t'il une "norme" ou de l'aide sur la "méthode" car je n'ai rien trouvé comme réelles explications la dessus ? Et l'un va-t'il plus vite que l'autre ? Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
didier Posté(e) le 6 juin 2016 Posté(e) le 6 juin 2016 Coucou Les deux se font ...il n'y a pas plus de "norme" que ça... Quant à la vitesse !!! si ça ça joue c'est à n'y rien comprendre. Puisque tu es dans l'apprentissage, regarde la fonction COND elle te sera utile si tu as plus de deux choix (vrai ou faux) Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Tramber Posté(e) le 6 juin 2016 Posté(e) le 6 juin 2016 Oui pour COND(princ(cond((setq ech (vlax-ldata-get "DenisH" "Ech")) (setq rien nil) "\nEchelle connue") ("\nEchelle inconnue")))L'avantage de COND c'est aussi qu'il rend inutile les PROGNJ'adore !Ici, j'ai appliqué le principe du SETQ dans l'évaluation mais j'ai même glissé l'expression dans le princ ! 1 Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
(gile) Posté(e) le 6 juin 2016 Posté(e) le 6 juin 2016 Salut, Petits rappels. En LISP toute expression retourne une valeur. Un appel de la fonction setq retourne la valeur de l'évaluation de la dernière expression, dans ton cas, le résultat de l'évaluation de l'expression :(vlax-ldata-get "DenisH" "Ech")Autrement dit :(setq ech (vlax-ldata-get "DenisH" "Ech")) retourne la même chose que :(vlax-ldata-get "DenisH" "Ech")Qui correspond à la valeur de :ech En LISP, une condition (telle que requise par if, cond, etc.) est considérée comme "vraie" tant qu'elle n'est pas nil (T n'est qu'un cas particulier pour "vrai"). LISP est défini récursivement : une expression LISP est un atome ou une liste d'expressions LISP.On perçoit bien là comment LISP rime avec imbrication, mais ça n'est pas une "norme" on peut préférer écrire un style plus séquentiel/procédural ou se noyer dans les parenthèses :(princ (if (setq ech (vlax-ldata-get "DenisH" "Ech")) "\nEchelle connue" "\nEchelle inconnue" ) ) 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 6 juin 2016 Posté(e) le 6 juin 2016 Re, Personnellement je n'utiliserais pas cond s'il n'y a qu'une condition (comme c'est le cas ici). Par contre cond peut-être intéressant pour affecter à une variable soit une valeur stockée (ldata par exemple) soit une valeur par défaut (et la stocker du même coup) :(setq ech (cond ((vlax-ldata-get "DenisH" "Ech")) ((vlax-ldata-put "DenisH" "Ech" 1.0)) ) )que je trouve plus élégant que :(if (not (setq ech (vlax-ldata-get "DenisH" "Ech"))) (setq ech (vlax-ldata-put "DenisH" "Ech" 1.0)) )ou même :(or (setq ech (vlax-ldata-get "DenisH" "Ech")) (setq ech (vlax-ldata-put "DenisH" "Ech" 1.0)) ) 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 7 juin 2016 Auteur Posté(e) le 7 juin 2016 Salut. Un grand merci à vous tous pour toutes ces explications, claires et limpides... C'est vrai que je ne pense jamais à cond, c'est dommage... Je perd beaucoup de temps à faire des if avec des conditions à perte de vu... Faut que je m'y mette... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant