URI('http://google.com')启动时调用的方法是什么?

时间:2019-06-27 15:31:53

标签: ruby

几乎所有人都使用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

1 个答案:

答案 0 :(得分:3)

很有趣,使用您显示的代码,fnu1lw可以工作(这是MyClass.()的别名)。

但是对于URI,实际上是一个方法(方法可以以大写字母开头)。您可以在此处查看源代码:https://apidock.com/ruby/Kernel/URI/instance