Sélectionner objet(s) dans une liste. | |
JJV | 16-Jan-2010/14:33:23+1:00 |
Bonjour, Comment gérer une liste plus précisément ? ne sélectionner que les deux ou quatre derniers (ou premiers) objets du fichier base.txt! 1/ Fichier base.txt rebol[] liste: compose/deep [ ( make object! [ capitale: "Rome" ]) ( make object! [ capitale: "Paris" ]) ( make object! [ capitale: "Athènes" ]) ( make object! [ capitale: "Madrid" ]) ( make object! [ capitale: "Lisbonne" ]) ;etc ] 2/ Fichier prog.r rebol[] html: make string! 10000 emit: func [code] [repend html code] liste: do %base.txt foreach pays liste [ emit[ pays/capitale newline ] ] write %resultat.txt html merci à tous et à toutes. Bon week-end JJV | |
Didec | 18-Jan-2010/10:14:50+1:00 |
Et bien 'foreach parcours tout le block en affectant chaque élément à 'pays. Pour ne prendre qu'une partie, utiliser les fonctions sur les séries, comme 'pick, first, second, ou les path avec variable, etc... ; les 4 premiers : for i 1 4 1 [ emit [liste/:i/capitale newline] ] ; les 4 derniers (en ordre inverse) for i 0 3 1 [ j: (length? liste) - i emit [liste/:j/capitale newline] ] ; ou encore dans l'ordre list2: at tail liste -4 ; pour ne pas modifier la position de liste, mais on peut positionner liste, puis la remettre au début avec 'head après le 'repeat repeat i 4 [ emit [list2/:i/capitale newline] ] ; on peut aussi utiliser 'pick : repeat i 4 [ emit [get in pick list2 i 'capitale newline] ] | |
ldci | 18-Jan-2010/10:26:41+1:00 |
Salut Si j'ai bien compris tu veux récupérer un élément quelconque dans ta liste. Différentes solutions sont possibles. Imaginons que je veuille récupérer le second objet de ton fichier txt (Paris). Solution 1: tu récupères directement par un pick str: pick liste 2 >> make object! [ capitale: "Paris" ] ensuite tu récupères le nom de la capitale capitale: second third str >> "Paris" La fonction emit [capitale newline] fonctionne Une autre façon de faire est de construire une seconde liste qui ne contient que les capitales liste2: [] foreach pays liste [ append liste2 pays/capitale ] >> ["Rome" "Paris" "Athènes" "Madrid" "Lisbonne"] emit [pick liste2 2 newline ] te permet de sélectionner et d'écrire dans le fichier résultat.txt la valeur "Paris" Cette solution est intéressante si ton objet n'a qu'un attribut (ici la capitale) Si ton objet à plusieurs attributs (ex la capitale, le nombre d'habitants...) la première est meilleure car tu peux avoir accès aux n attributs par un third de l'objet récupéré dans la liste par le pick n Bon courage et à + | |
JJV | 19-Jan-2010/16:54:23+1:00 |
Yep Yep ca y est l'annuaire des entreprises http://www.itroovetoo.com qui liste les dernieres (9) entreprises inscrites est en route merci Didec et LDCI le code est: for i 0 8 1 [ j: (length? liste) - i emit[ emit [liste/:j/entreprise newline] ] ] Cet annuaire est presque finalisé il tourne avec Magic et Rebolcore coté serveur. ce qui serait super: au coté d'Apache, de mettre Cheyenne et de le faire tourné dessus. Un projet pour un avenir proche (6 mois). Voila JJV | |
Login required to Post. |