理解ruby库
我正在测试这个小型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::意思? 为什么
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::