to-set-path | |
neoreb | 5-Feb-2007/19:13:32+1:00 |
A B .. D sont des variables bouttons dans une view. liste1: [A B] liste2: [C D] to-set-path reduce [liste1/1 'text] do to-path reduce [liste2/1 'text] je voudrais que ca fasse A/text: C/text mais apparemment le to-set-path ne marche pas (?) merci d'avance | |
neoreb | 5-Feb-2007/21:49:12+1:00 |
je me reponds le code ci-dessous marche change do to-path reduce [liste1/1 'text] do to-path reduce [liste2/1 'text] mais y aurait-il quelqu'un pour confirmer que to-set-path ne marche pas ? merci | |
coccinelle | 6-Feb-2007/8:34:37+1:00 |
Le problème, c'est le placement de ton do. Ceci doit fonctionner : reduce [to-set-path reduce [liste1/1 'text] to-path reduce [liste2/1 'text]] | |
coccinelle | 6-Feb-2007/8:36:10+1:00 |
Arg, j'oubliais le do :do reduce [to-set-path reduce [liste1/1 'text] to-path reduce [liste2/1 'text]] | |
neoreb | 6-Feb-2007/9:40:11+1:00 |
ah merci coccinelle mais je n'arrive pas à comprendre pourquoi il faut le do ET le premier reduce. Je ne comprends pas pourquoi le do ne suffit pas: do [to-set-path reduce [liste1/1 'text] to-path reduce [liste2/1 'text]] ne marche pas | |
Reb-Kodeur | 6-Feb-2007/12:09:37+1:00 |
La raison est qu'il faut encore un second niveau de 'reducing pour que le do puisse correctement effectuer son job. Mais plus exactement, je ne sais. Didec peut te renseigner je pense | |
Didec | 6-Feb-2007/13:20:13+1:00 |
Le 'do sans 'reduce exécute simplement les instructions 'to-set-path. Le résultat est qu'il génère le code que tu veux (a/text: C/text) et non qu'il l'exécute. Il suffit de mettre 'probe devant la ligne sans le 'reduce pour voir que le résultat est "C/text" (soit le résultat de l'exécution du block). On voit bien que c'est le path qui est retourné et non la valeur de la propriété 'text de 'C. Le 'reduce sans 'do fait de même. Donc avec les 2, on a 'reduce qui génère le code que tu veux et 'do qui l'exécute. | |
neoreb | 6-Feb-2007/22:22:43+1:00 |
merci didec compris pourquoi il faut do reduce mais alors pourquoi do do (2 fois do) ne marche pas ? | |
coccinelle | 7-Feb-2007/9:07:45+1:00 |
Ce que tu veux, c'est exécuter un bout de script composé dynamiquement. Dans ce cas, tu dois composer un bloc sinon comment pourrait savoir où s'arrête ce morceau de script. Le reduce te permet de composer dynamiquement ce morceau de script. Le do permet de l'exécuter. Personnellement, je préfère utiliser compose plutôt que reduce dans cas, ce qui donnerait : do compose [(rejoin [to-set-path liste1/1 'text]) (rejoin [to-path liste2/1 'text])] | |
neoreb | 7-Feb-2007/12:09:38+1:00 |
oui ok compris. j'avais repondu trop vite merci | |
Login required to Post. |