模块 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很容易理解,它调用模块URImodule_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