我最近有理由使用nokogiri gem來解析html,但是當我瀏覽他們的文檔時,我遇到了這種我以前沒見過的ruby語法語法MODULE :: METHODNAME('string')是如何工作的
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>')
我感興趣的部分是Nokogiri :: HTML('...')。這看起來非常像方法調用,但我知道ruby方法名稱不能用大寫字母。所以,我看遍了代碼文件引入nokogiri寶石和我碰到下面的定義
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
我試圖複製相同的代碼
module How
class << self
def DOESTHISWORK
puts "In How Method"
end
end
end
How::DOESTHISWORK
但它一直回來出現錯誤「未初始化的常量如何:: DOESTHISWORK (NameError)」。我知道它與首都開始的方法名稱有關,但我一直無法弄清它在nokogiri中的工作原理。
但如何走到這一步的作品,儘管ruby確保方法名稱以小寫字母或下劃線字符開頭? – Anwuna 2015-03-24 23:13:49
@Anwuna我在答案中增加了一些細節:簡短版本:這是一個很好的習慣,但不是強制性的,用小寫字母開始方法名稱。 – mikej 2015-03-24 23:21:39
謝謝。直到現在我還以爲口譯員實際上是在執行它。不知道這是更多的一個慣例。 – Anwuna 2015-03-24 23:26:04