2010-03-21 3 views
1

J'ai un bloc sur lequel je veux itérer récursivementproblème avec récursivité dans rebol

folders: [ 
    Chrome [ 
     content [ 
      preferences 
      prefpages 
     ] 
    ] 
    icons [ 
     default 
    ] 
    locale [ 
     en-EN [ 
      csbar 
     ] 
    ] 
    skin 
] 

avec cette fonction:

iterate-folder: func [folders [block!]][ 
    foreach folder folders [ 
     either not block? folder [ 
      probe folder 
      temp: folder 
      input 
     ] [ 
      print "folder" 
      probe folder 
      print "folders" 
      probe folders 
      probe select folders folder 
      type-folder: type? select folders folder 
      probe type-folder 
      input 
      iterate-folder select folders folder 
     ] 
    ] 
] 

mais pour une raison stupide je ne vois pas, retourne dossier de sonde aucun ci-dessus donc ça ne marche pas.

Répondre

3

Il est que sélectionner le dossier des dossiers qui messsing vers le haut, je pense ..... dossier est déjà la structure de données que vous souhaitez.

Essayez cette (note également la demander plutôt que entrée juste pour ajouter une chaîne de débogage à ce moment-là):

iterate-folder: func [folders [block!]][ 
    foreach folder folders [ 
     either not block? folder [ 
      probe folder 
      temp: folder 
      ask "continue/not block" 
    ] [ 
      print "folder" 
      probe folder 
      print "folders" 
      probe folders 
      probe select folders folder 
      type-folder: folder 
      probe type-folder 
      ask "continue/block" 
      iterate-folder folder 
     ] 
    ] 
] 
+0

Merci :) semble fonctionner –