【Ruby3.x】Dir::each_child()メソッドの使い方
each_childメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
each_childメソッドは、指定されたディレクトリの直下に存在する子要素(ファイルやサブディレクトリ)の名前を一つずつ取り出し、それらに対して特定の処理を実行するメソッドです。このメソッドは、Dirクラスのインスタンスに対して呼び出され、ブロックを引数として受け取ります。ブロックが与えられた場合、ディレクトリ内の各子要素の名前(文字列)を順にブロックに渡し、そのブロックを子要素の数だけ繰り返し実行します。これにより、プログラムからディレクトリの内容を効率的に列挙し、個々の要素に対して必要な操作を行うことが可能になります。
ここで取得できる名前は、フルパスではなく、あくまでそのディレクトリ内での名前(例えば「example.txt」や「subdirectory」など)です。また、カレントディレクトリを示す「.」や親ディレクトリを示す「..」といった特殊なエントリは含まれませんので、余計なフィルタリングの手間が省けます。取得した要素がファイルなのか、それとも別のサブディレクトリなのかを区別して処理したい場合は、File.directory?やFile.file?のようなFileモジュールのメソッドと組み合わせて使用することが一般的です。ブロックを与えなかった場合はEnumeratorオブジェクトが返され、ブロックを与えた場合はメソッドの呼び出し元であるDirオブジェクト自身が返されます。このメソッドは、ディレクトリ内の要素を一つずつ処理する場面で非常に役立ちます。
構文(syntax)
1Dir.each_child(".").each do |child_name| 2 puts child_name 3end
引数(parameters)
引数なし
引数はありません
戻り値(return)
Dir または Enumerator
Dir オブジェクトをブロックで渡された場合に、Dir オブジェクト自身を返します。ブロックが渡されなかった場合は、Dir オブジェクトの要素を順に処理するための Enumerator オブジェクトを返します。