Ruby 语法模块::METHODNAME(';string';)是如何工作的

Ruby 语法模块::METHODNAME(';string';)是如何工作的,ruby,nokogiri,Ruby,Nokogiri,我最近有理由使用nokogiri gem来解析html,但是当我浏览他们的文档时,我发现了这个ruby语法,这是我以前从未见过的 html_doc = Nokogiri::HTML('<html><body><h1>Mr. Belvedere Fan Club</h1></body></html>') xml_doc = Nokogiri::XML('<root><aliens><alien&

我最近有理由使用nokogiri gem来解析html,但是当我浏览他们的文档时,我发现了这个ruby语法,这是我以前从未见过的

html_doc = Nokogiri::HTML('<html><body><h1>Mr. Belvedere Fan Club</h1></body></html>')
xml_doc  = Nokogiri::XML('<root><aliens><alien><name>Alf</name></alien></aliens></root>')
html\u doc=Nokogiri::html('Belvedere先生粉丝俱乐部')
xml_doc=Nokogiri::xml('Alf')
我感兴趣的部分是Nokogiri::HTML(“…”)。这看起来很像方法调用,但我知道ruby方法名称不能用大写字母。所以我浏览了nokogiri gem的代码文件,发现了以下定义

module Nokogiri
  class << self
     ###
     # Parse HTML.  Convenience method for Nokogiri::HTML::Document.parse
     def HTML thing, url = nil, encoding = nil, options = XML::ParseOptions::DEFAULT_HTML, &block
          Nokogiri::HTML::Document.parse(thing, url, encoding, options, &block)
     end
  end
 # more code
end
Nokogiri模块

类不同之处在于Nokogiri示例中使用括号和参数值调用该方法,该参数值将其标识为方法调用。您的
执行此工作
方法不接受任何参数,但可以使用空括号调用,例如

irb(main):028:0> How::DOESTHISWORK()
In How Method
=> nil
如果向方法中添加一个参数,该参数也可以用于将其标识为方法,如下所示:

irb(main):036:0> How::DOESTHISWORK 'some param'

以小写字母开头的方法名是一种很好的做法,但并不强制执行。以大写字母开头的内容被假定为常量,并将作为常量进行查找,这就是为什么需要使用括号或参数来指示引用的方法。另一个例子:

irb(main):051:0> def Example
irb(main):052:1> puts "An example!"
irb(main):053:1> end
=> nil
irb(main):054:0> Example
NameError: uninitialized constant Example
    from (irb):54
    from /Users/mike/.rbenv/versions/1.9.3-p194/bin/irb:12:in `<main>'
irb(main):055:0> Example()
An example!
=> nil
irb(main):051:0>def示例
irb(main):052:1>放“一个例子!”
irb(主):053:1>结束
=>零
irb(主):054:0>示例
NameError:未初始化的常量示例
来自(irb):54
from/Users/mike/.rbenv/versions/1.9.3-p194/bin/irb:12:in`'
irb(主):055:0>示例()
一个例子!
=>零

不同之处在于,在Nokogiri示例中,使用括号和参数值调用该方法,该参数值将其标识为方法调用。您的
执行此工作
方法不接受任何参数,但可以使用空括号调用,例如

irb(main):028:0> How::DOESTHISWORK()
In How Method
=> nil
如果向方法中添加一个参数,该参数也可以用于将其标识为方法,如下所示:

irb(main):036:0> How::DOESTHISWORK 'some param'

以小写字母开头的方法名是一种很好的做法,但并不强制执行。以大写字母开头的内容被假定为常量,并将作为常量进行查找,这就是为什么需要使用括号或参数来指示引用的方法。另一个例子:

irb(main):051:0> def Example
irb(main):052:1> puts "An example!"
irb(main):053:1> end
=> nil
irb(main):054:0> Example
NameError: uninitialized constant Example
    from (irb):54
    from /Users/mike/.rbenv/versions/1.9.3-p194/bin/irb:12:in `<main>'
irb(main):055:0> Example()
An example!
=> nil
irb(main):051:0>def示例
irb(main):052:1>放“一个例子!”
irb(主):053:1>结束
=>零
irb(主):054:0>示例
NameError:未初始化的常量示例
来自(irb):54
from/Users/mike/.rbenv/versions/1.9.3-p194/bin/irb:12:in`'
irb(主):055:0>示例()
一个例子!
=>零

不同之处在于,在Nokogiri示例中,使用括号和参数值调用该方法,该参数值将其标识为方法调用。您的
执行此工作
方法不接受任何参数,但可以使用空括号调用,例如

irb(main):028:0> How::DOESTHISWORK()
In How Method
=> nil
如果向方法中添加一个参数,该参数也可以用于将其标识为方法,如下所示:

irb(main):036:0> How::DOESTHISWORK 'some param'

以小写字母开头的方法名是一种很好的做法,但并不强制执行。以大写字母开头的内容被假定为常量,并将作为常量进行查找,这就是为什么需要使用括号或参数来指示引用的方法。另一个例子:

irb(main):051:0> def Example
irb(main):052:1> puts "An example!"
irb(main):053:1> end
=> nil
irb(main):054:0> Example
NameError: uninitialized constant Example
    from (irb):54
    from /Users/mike/.rbenv/versions/1.9.3-p194/bin/irb:12:in `<main>'
irb(main):055:0> Example()
An example!
=> nil
irb(main):051:0>def示例
irb(main):052:1>放“一个例子!”
irb(主):053:1>结束
=>零
irb(主):054:0>示例
NameError:未初始化的常量示例
来自(irb):54
from/Users/mike/.rbenv/versions/1.9.3-p194/bin/irb:12:in`'
irb(主):055:0>示例()
一个例子!
=>零

不同之处在于,在Nokogiri示例中,使用括号和参数值调用该方法,该参数值将其标识为方法调用。您的
执行此工作
方法不接受任何参数,但可以使用空括号调用,例如

irb(main):028:0> How::DOESTHISWORK()
In How Method
=> nil
如果向方法中添加一个参数,该参数也可以用于将其标识为方法,如下所示:

irb(main):036:0> How::DOESTHISWORK 'some param'

以小写字母开头的方法名是一种很好的做法,但并不强制执行。以大写字母开头的内容被假定为常量,并将作为常量进行查找,这就是为什么需要使用括号或参数来指示引用的方法。另一个例子:

irb(main):051:0> def Example
irb(main):052:1> puts "An example!"
irb(main):053:1> end
=> nil
irb(main):054:0> Example
NameError: uninitialized constant Example
    from (irb):54
    from /Users/mike/.rbenv/versions/1.9.3-p194/bin/irb:12:in `<main>'
irb(main):055:0> Example()
An example!
=> nil
irb(main):051:0>def示例
irb(main):052:1>放“一个例子!”
irb(主):053:1>结束
=>零
irb(主):054:0>示例
NameError:未初始化的常量示例
来自(irb):54
from/Users/mike/.rbenv/versions/1.9.3-p194/bin/irb:12:in`'
irb(主):055:0>示例()
一个例子!
=>零

我还发现这篇文章非常有用

虽然不是强制性的,但最好以 小写字符,因为名称以大写字母开头 是Ruby中的常量。仍然可以使用一个常量名称来 方法,但如果没有括号,您将无法调用它, 因为interpeter将查找作为常量的名称


我还发现这篇文章很有帮助

虽然不是强制性的,但最好以 小写字符,因为名称以大写字母开头 是Ruby中的常量。仍然可以使用一个常量名称来 方法,但如果没有括号,您将无法调用它, 因为interpeter将查找作为常量的名称


我还发现这篇文章很有帮助

虽然不是强制性的,但最好以 小写字符,因为名称以大写字母开头 是Ruby中的常量。仍然可以使用一个常量名称来 方法,但如果没有括号,您将无法调用它, 因为interpeter将查找作为常量的名称


我还发现这篇文章很有帮助

虽然不是强制性的,但最好以 小写字符,因为名称以大写字母开头 是Ruby中的常量。还是可以用骗局的