stephan35 Posté(e) le 4 mai 2007 Posté(e) le 4 mai 2007 Bonjour, j'aimerai régler un problème de développement,Imaginons que je dois extraire une liste de fichiers ("string" "string" ...)et qu'ensuite je dois faire un test sur chaque élément de la liste, (setq &liste (list "1" "2" "3")) (foreach $tmp &liste (print $tmp) ) Jusque là facile ! Maintenant la liste &liste est issue d'une fonction (setq &liste (getfile "*.plt" "C:/")) Maintenant je souhaite faire la même chose sans passer par la variable &liste !!! :casstet: (foreach $tmp (getfile "*.plt" "C:/") (print $tmp) ) Et maintenant losrque mon résultat de mon getfile est nil ça plante !!! Je peut faire un (if (getfile ...) (foreach $tmp (getfile ...Mais ça ne me plait pas ! Donc ma demande est : comment fait-on pour executer un test sur le résultat d'une fonction dans rappeler 2 fois la fonction et sans passer par une variable intermédiaire ??? :casstet: Ps: milles excuses pour la longueur ...
(gile) Posté(e) le 4 mai 2007 Posté(e) le 4 mai 2007 Si tu ne veux pas passer par une variable : (setq &liste (getfile "*.plt" "C:/")), tu peux utiliser une fonction lambda : ((lambda (lst) (if lst (foreach $tmp lst (print $tmp) ) ) ) (getfile "*.plt" "C:/") ) PS : Je ne comprends pas bien ton soucis, si la liste est vide (nil) foreach retourne nil :casstet: [Edité le 4/5/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 4 mai 2007 Posté(e) le 4 mai 2007 Ou en gardant le même esprit, utiliser la fonction vl-directory-files (foreach $tmp (vl-directory-files "c:/" "*.plt") (print $tmp)) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
stephan35 Posté(e) le 4 mai 2007 Auteur Posté(e) le 4 mai 2007 C'était un exemple !Oui le froeach répond nil , je change d'exemple .... :P fonction @toto qui retourne une liste au format (number "string1" "string2") j'ai besoin de tester le nth 0 pour faire un cond donc si je ne souhaite pas passer par une variable intermédiaire (@toto "fichier) ; Je ne suis pas sur de mon résultat retourne nil si erreur (if (@toto "fichier) (if (= (nth 0 (@toto "fichier)) 0)(progn .... ....... ....) (progn (alert "Pas possible") .... ) ) (alert "Plantage") ) Sinon effectivement, (@toto "fichier) ; Je ne suis pas sur de mon résultat retourne nil si erreur (if (setq tmp (@toto "fichier)) (if (= (nth 0 tmp) 0)(progn .... ....... ....) (progn (alert "Pas possible") .... ) ) (alert "Plantage") ) ??? :casstet: Il n'y a pas urgence ! c'est juste pour ma connaissance personnelle ;) Merci et a+
(gile) Posté(e) le 4 mai 2007 Posté(e) le 4 mai 2007 Ce que je disais pour les fonctions lambda reste valable, c'est un moyen pour éviter de définir des variables. ((lambda (tmp) (if tmp (if (= (nth 0 tmp) 0) (progn . . . . . . . . . . . . . . .) (progn (alert "Pas possible") . . . . ) ) (alert "Plantage") ) ) (@toto "fichier") ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
stephan35 Posté(e) le 4 mai 2007 Auteur Posté(e) le 4 mai 2007 L'essayer c'est l'adopter ! Merci Gile A+
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