模块 URI 构造函数说明
Module URI constructor explain
require "uri"
u = URI.parse("https://www.google.com") #<URI::HTTPS https://www.google.com>
v = URI("https://www.google.com") #<URI::HTTPS https://www.google.com>
u == v # => true
URI.parse
很容易理解,它调用模块URI
module_functionparse
。
在Ruby的上下文中如何理解URI()
?它调用了什么方法?或者这是一个语法糖?
关于您问题的最佳答案是源代码。当您调用 URI('http..')
时执行以下代码
def URI(uri)
if uri.is_a?(URI::Generic)
uri
elsif uri = String.try_convert(uri)
URI.parse(uri)
else
raise ArgumentError,
"bad argument (expected URI object or URI string)"
end
end
正如您在幕后看到的那样,此方法允许您传递任何参数,并确保如果参数不是 uri 或 uri 实例,程序将抛出 ArgumentError
。因此,在我看来,使用 URI('...')
比使用 URI.parse('...')
进行额外检查的好习惯。
有空自己去看看:github ruby repo mirror
require "uri"
u = URI.parse("https://www.google.com") #<URI::HTTPS https://www.google.com>
v = URI("https://www.google.com") #<URI::HTTPS https://www.google.com>
u == v # => true
URI.parse
很容易理解,它调用模块URI
module_functionparse
。
在Ruby的上下文中如何理解URI()
?它调用了什么方法?或者这是一个语法糖?
关于您问题的最佳答案是源代码。当您调用 URI('http..')
def URI(uri)
if uri.is_a?(URI::Generic)
uri
elsif uri = String.try_convert(uri)
URI.parse(uri)
else
raise ArgumentError,
"bad argument (expected URI object or URI string)"
end
end
正如您在幕后看到的那样,此方法允许您传递任何参数,并确保如果参数不是 uri 或 uri 实例,程序将抛出 ArgumentError
。因此,在我看来,使用 URI('...')
比使用 URI.parse('...')
进行额外检查的好习惯。
有空自己去看看:github ruby repo mirror