В ruby-doc записи документации для File::exist?
и File::exists?
дублируются с использованием другой семантики: одна запись говорит, возвращает true
если file_name
- это каталог; другой говорит, возвращает true
, если file_name
является файлом.
Я не думаю, что запись верна. Оба метода, похоже, реализованы в file.c
с помощью rb_file_exist_p
, который, кажется, пытается вызвать fstat()
, если переданное значение является IO или stat()
, если это строка. Оба fstat()
и stat()
возвращают 0
при успехе и -1
при ошибке, и это возвращается к rb_file_exist_p
и превращается в логический результат. Мне кажется, что
- существует два способа облегчения чтения кода; нет семантических различий
- ни один из них не связан с существующим файлом, но существует ли файл-подобный элемент, например. файл, директорию, сокет, fifo и т.д.
- Возможно, документ может сказать, что методы сообщают вызывающему, есть ли вещь, которая имеет файловую семантику, но более конкретные тесты расскажут, что это на самом деле: например. каталог?, файл?, сокет? и др.
Насколько я понимаю (недостаток) разницы в методах, и стоит ли предлагать изменение документа?