理解ruby库

理解ruby库,ruby,Ruby,我正在测试这个小型Ruby程序: require 'net/http' url = URI.parse('http://www.rubyinside.com/') response = Net::HTTP.start(url.host, url.port) do |http| http.get(url.path) end content = response.body 我不明白为什么URI.parse没有前缀Net::和Net::HTTP.start有前缀 什么是Net::意思? 为什么

我正在测试这个小型Ruby程序:

require 'net/http'
url = URI.parse('http://www.rubyinside.com/')
response = Net::HTTP.start(url.host, url.port) do |http|
   http.get(url.path)
end
content = response.body
我不明白为什么
URI.parse
没有前缀
Net::
Net::HTTP.start
有前缀

什么是
Net::
意思?

为什么URI.parse没有前缀Net::

说明-当您执行
时需要“net/http”
,那么这也将
需要“uri”
,因此您不需要单独要求它。
是模块的一种方法。记住
URI
Net
是两个不同的模块

是一个模块。在
Net下定义了模块类


是命名空间/范围解析运算符。因此,要访问模块
Net
中的
HTTP
类,我们需要使用
Net::HTTP
。是类
Net::HTTP
的一个方法,这就是为什么像
Net::HTTP.start
Net
这样的调用是一个模块(即名称空间),而
HTTP
是一个类,所以通过
Net::HTTP
可以访问
Net
模块下的
HTTP

是名称空间解析运算符,有关详细信息,请参阅

正如其他人所指出的,它的设计目的是与另一个模块紧密合作(您可以通过执行
require'uri'
单独使用它,而无需
net/http

因此,当您需要
net/http
时,它也需要
uri
,这就是您可以在代码中使用
uri
访问它的原因。

1)net::表示代码位于模块net(ruby的命名空间)中。它可以在文件夹网络中找到。
2) URI.parse没有前缀Net,因为它不属于Net::