Я изучаю Ruby, но у меня проблемы с неявным возвратом значений. Кто-то, пожалуйста, скажите мне, почему это возвращает пустой вектор:
3 def get_filenames(path)
4 filenames = []
5
6 if (path == ".") || (path == "..")
7 []
8 elsif File.directory? path
9 Dir.entries(path).each do |sub_path|
10 filenames += get_filenames(sub_path)
11 end
12 else #presumably it's a file
13 [File.basename(path,".*")]
14 end
15 end
Он должен возвращать массив всех имен файлов (без их расширения), найденных при рекурсивном поиске по пути аргумента.
Предположим, что я вызываю функцию с "/ tmp", и tmp содержит 2 файла: "A.txt" и "B.m", а затем каталог, который содержит 1 файл "C.exe". Я хочу, чтобы эта функция возвращала ["A", "B", "C"]