我正在尋找一些有關vbscript內遞歸的專家見解。 從網上找到的各種示例中,我創建了以下代碼,該代碼正常工作。vbscript遞歸編程技巧
- http://saltwetbytes.wordpress.com/2010/05/04/vbscript-grabbing-subfolders-recursively/
http://technet.microsoft.com/en-us/library/ee198872.aspx
Function GetAllSubFolders(RootFolder, ByRef pSubfoldersList) Dim fso, SubFolder, root Set fso = CreateObject("scripting.filesystemobject") set root = fso.getfolder(RootFolder) For Each Subfolder in root.SubFolders If pSubFoldersList = "" Then pSubFoldersList = Subfolder.Path Else pSubFoldersList = pSubFoldersList & "|" & Subfolder.Path End If GetAllSubFolders Subfolder, pSubFoldersList Next GetAllSubFolders = pSubFoldersList End Function
我的問題是:這是一個很好的形式給出,當它(使用存儲先前的結果參數)來創建一個遞歸函數?
我更喜歡把它放在一個(自包含的)「函數」中,所以程序返回subsubfolders作爲結果。但大多數實例發現使用「子」時,我總是感到困惑,當涉及到「子」與「功能」(我明白當你想要一個程序,需要返回一些你使用的功能,恕我直言這似乎是案例在這個例子中) 但我也可以使用一個「子」,只是簡單的參考輸出參數(ByRef pSubfoldersList)
那麼最好的做法是什麼或更好地使用一個完全不同的方法呢? (這個函數與[shell.exec「cmd/c dir RootFolder/s/b/a:d」]相比也很慢,我想這是遞歸的一個副作用,或者FSO只是真的很慢嗎?)
(郵件通知似乎並沒有工作:-()thanx您的回覆爲例,這些肯定是一些有用的提示。我一定會看看「搜索所有東西」 對於這個例子,我只是想創建一個文件夾內的文件列表和所有的子文件夾。但是現在我對如何創建一個遞歸函數很感興趣 也許你可以告訴我你將如何在Ruby中做到這一點?我對vbscript的具體問題是,在一個函數中定義一個公共變量似乎是不可能的,那麼剩下什麼選項來存儲(自包含的)遞歸函數的先前結果呢? – user1348255 2012-04-27 19:00:44
好吧,這取決於你如何定義「自包含」,在我上面的回答中,我使用iCount作爲你可以在你的函數中訪問的全局變量,否則你必須將變量傳遞給另一個函數(或者在遞歸),就像你做的一樣。這同樣適用於我所知道的所有語言,我建議Ruby,因爲它也是一種腳本語言,但具有編譯語言的所有功能,但易於使用和學習。 – peter 2012-04-27 22:14:25