Если у меня есть такая структура папок:
rexml
rexml/document
Не является ли следующий синтаксис рекурсивной ссылкой, включающей все, что ниже него?
require 'rexml'
Или мне нужно написать следующее, если я также хочу получить доступ к тому, что находится в 'document'
?:
require 'rexml/document'
Причина, по которой я смущен, заключается в том, что я вижу код, в котором автор пишет оба оператора require один за другим:
require 'rexml'
require 'rexml/document'
Я не был уверен, действительно ли это было необходимо.
2 ответа
Стандартный Ruby require
загружает только файлы Ruby, но не папки или что-либо еще. Когда вы говорите «require 'rexml'», вы фактически говорите «найдите 'rexml.rb' в одном из путей в $: и загрузите его». Таким образом, «require 'rexml / document'» ищет файл «document.rb» в папке «rexml» по одному из путей в $ :.
В Ruby для require
требуется только один файл. Однако во многих случаях авторы библиотек / драгоценных камней гарантируют, что для этого единственного файла требуется весь другой код, необходимый для использования библиотеки - см. , например, эти строки в библиотеке nokogiri . Однако это может варьироваться от библиотеки к библиотеке, и в случае REXML кажется, что вам действительно нужно требовать rexml / document.
Похожие вопросы
Новые вопросы
ruby
Ruby - это многоплатформенный динамический объектно-ориентированный интерпретируемый язык с открытым исходным кодом. Тег [ruby] предназначен для вопросов, связанных с языком Ruby, включая его синтаксис и его библиотеки. Вопросы Ruby on Rails должны быть помечены [ruby-on-rails].