几乎所有人都使用URI
模块将url字符串转换为对象以进行验证或更改。
示例:
require 'uri'
URI('https://google.com')
# => #<URI::HTTPS https://google.com>
如您所见,结果是HTTPS
模块下的URI
对象。
因此,存在一个问题,当您使用圆括号(如上面的代码行)编写模块/类名称时,将运行什么。
我以为,这是call
方法的隐式调用,但是我得到了NoMethodError
。
示例:
class MyClass
def self.call
puts 'You were right!'
end
end
MyClass()
# => NoMethodError: undefined method `MyClass' for main:Object
答案 0 :(得分:3)
很有趣,使用您显示的代码,fnu1lw
可以工作(这是MyClass.()
的别名)。
但是对于URI,实际上是一个方法(方法可以以大写字母开头)。您可以在此处查看源代码:https://apidock.com/ruby/Kernel/URI/instance