3

如果我有这个文件夹结构:

rexml
rexml/document

下面的语法不是包含其下所有内容的递归引用吗?

require 'rexml'

或者,如果我还想访问其中的内容,是否需要编写以下内容'document'?:

require 'rexml/document'

我感到困惑的原因是我看到一些代码,其中作者一个接一个地编写了两个 require 语句:

require 'rexml'
require 'rexml/document'

我不确定这是否真的有必要。

4

2 回答 2

11

Ruby 的标准require只加载 Ruby 文件,而不是文件夹或其他任何东西。当您说“需要'rexml'”时,实际上是在说“在$: 中的一个路径中查找'rexml.rb' 并加载它”。因此,“require 'rexml/document'”在 $: 中的路径之一中的文件夹“rexml”中查找文件“document.rb”。

于 2009-06-05T22:15:25.033 回答
6

在 Ruby 中,require只需要一个文件。在许多情况下,库/gems 的作者将确保单个文件需要使用该库所需的所有其他代码,但是 - 例如,请参阅nokogiri 库中的这些行。但是,这可能因库而异,对于 REXML,您似乎确实需要 require 'rexml/document'。

于 2009-06-05T21:58:57.283 回答