質問: Nokogiri::HTML.parse(html, nil, charset) ``` Nokogiri::HTML.parse ここの部分は何をしているのでしょうか? * Nokogiriはnokogiriというgemがあるのでそれの呼び出しかと思うのですが、頭文字が大文字なのでクラスでしょうか? * ::このコロン2つはどういう意味でしょうか? * HTMLは定数だと思いますが、何故ここで定数が出てくるのでしょうか? 質問は以上の4つです。全部でなくてもいいので、どなたかご教示ください。よろしくお願いします。 ※改めて4つの質問をまとめます。 1. 何故ブロックを使うのか 2. Nokogiriという部分はgemの呼び出しだと思われるが、クラスなのかどうか 3. コロン2つは何を意味するのか 4. HTMLという定数は、何故ここで出てくるのか 質問は以上です。
回答: > > 何故ブロックを使うのか > > > この`open`メソッドは、ブロック付きで呼び出した場合に、「ブロックを抜けたらファイルを閉じる」という挙動になっています。もっとも、URLからの取得の場合は、結局データを全部持ってくるだけで「閉じる」という概念もないので、そこまで意味はありません。 > > Nokogiriという部分はgemの呼び出しだと思われるが、クラスなのかどうか > > > 実際にgemを呼び出しているのは`require 'nokogiri'`のほうで、`Nokogiri`はそこに含まれる**モジュール**です。 > > コロン2つは何を意味するのか > > > Rubyでは、モジュールやクラスの中に、さらに別のクラスやモジュールを作ることができます。`::`は、クラスの中にある定数にアクセスするための区切りですが、もちろんモジュールやクラス自体も定数ですので、`::`でアクセスすることとなります。 > > HTMLという定数は、何故ここで出てくるのか > > > もしNokogiriが、単に`HTML`というモジュールを作ったとすると、何かと衝突する危険が出てきます。`Nokogiri::HTML`とすれば、他のライブラリと干渉する心配もない、という理屈です。 今回の件は、前の質問にも出てきた**名前空間**にまつわるものですので、そこを理解していってください。