私はvbscript内の再帰に関する専門家の洞察力を求めています。 オンラインで見つかったさまざまな例から、私は次のコードを作成しました。vbscript recursion programming-techniques
- 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
私の質問です:それは(以前の結果を格納するためのパラメータを使用して)再帰関数を作成することになると、これは良いaproachですか?
これは、(自己完結型の)「関数」に入れるのが好ましいので、プロシージャはサブサブフォルダを結果として返します。しかし、ほとんどの例では「サブ」を使用していますが、「サブ」と「関数」についてはいつも混乱しています(関数を使用するものを返す必要のあるプロシージャが必要なときは、この例ではケース) しかし、私はまた、 "サブ"と単なる単純な参照を出力パラメータ(ByRef pSubfoldersList)を使用することができます
だからベストプラクティスは何ですか? (この関数はこの例でも、[shell.exec "cmd/c dir RootFolder/s/b/a:d"]と比べて非常に遅いですが、これは再帰による副作用か、本当に遅いですか?)
を使用した例である(メール:-(を動作していないよう通知)お返事ありがとう、それらは間違いなくいくつかの有用なヒントがあります。私は確かに "すべてを検索"をチェックアウトします 私は単にフォルダ内のファイルのリストを作成したいと思います。しかし今、私は再帰関数を作成する方法に興味を持っています あなたはRubyでどうやってやるのか教えていただけますか?私がvbscriptで持っている特定の問題は、関数内でpublic変数を定義することはできないと思われるので、(自己完結型)再帰関数の以前の結果を格納するオプションは残っていますか? – user1348255
まあ、それはあなたがあなたの関数でアクセスできるグローバル変数としてiCountを使用する上記の私の答えで、あなたが "自己完結型"を定義する方法に依存し、そうでなければ、別の関数に変数を渡す必要がありますあなたがしたように参照によって)。私が知っているすべての言語にも同じことが当てはまります。私はRubyもスクリプト言語であるが、コンパイルされた言語のすべての能力を持ちながら、簡単に使用して学ぶことができるため、Rubyに助言します。 – peter