Проблема с рекурсивностью в ребол - PullRequest
1 голос
/ 21 марта 2010

У меня есть блок, который я хочу рекурсивно повторять

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

с этой функцией:

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
        ]
    ]
]

но по глупой причине я не вижу, папка зонда не возвращает ничего выше, поэтому она не работает

1 Ответ

3 голосов
/ 21 марта 2010

* * * * * * * * * * * * * * * * * * *} * * * * * * * * * * * * * * *} * * * * * * * * * * * * * * *} * * * * * * * * * * * * * * * * * * * * * * * * * *} * * * * * * * * * * * * * * * * * * * * * * *} * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 100 * * " Попробуйте это (обратите внимание также ask вместо input только для добавления строки отладки в этот момент):

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 
        ]
    ]
]
...