URI和之间有什么区别URI.parse?这是我得到的:
require 'uri'
x = "http://google.com"
y = URI(x) # => #<URI::HTTP http://google.com>
z = URI.parse(x) # => #<URI::HTTP http://google.com>
y == z # => true
Run Code Online (Sandbox Code Playgroud)
我在文档中看到的新实例无需检查即可从通用组件URI创建新URI::Generic实例,并且在args中具有默认解析器。
一般建议似乎是URI.parse,我想知道为什么。我想知道是否有使用URI和不使用的陷阱URI.parse。赞赏任何见识。
其实URI(x)和URI.parse(x)都是一样的。
URI是定义在上的方法Kernel,它基本上会调用URI.parse(x)。
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
Run Code Online (Sandbox Code Playgroud)
稍后,在您的代码中,ruby解析器会根据您使用的语法来确定您是否真正想要调用一个函数URI或该模块URI。