1

再帰的に反復したいブロックがあります

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

しかし、私が見ることができない愚かな理由で、プローブフォルダーは上記に何も返さないため、機能しません。

4

1 に答える 1

3

それを台無しにしているのはフォルダーの選択だと思います.....フォルダーはすでに必要なデータ構造です。

これを試してください(その時点でデバッグ文字列を追加するためだけに、入力ではなく尋ねることにも注意してください):

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 
        ]
    ]
]
于 2010-03-21T12:25:03.847 に答える