1

https://github.com/alexreisner/geocoder

私は Ruby Geocoder Gem が大好きで、そのすべてが驚くべきメタプログラミングであり、そのほとんどは単純に理解できません。

Geocoder::Request モジュールの下部で何が起こっているか知っている人はいますか?

私を当惑させる単純な 3 行のブロックがあります。

実際にはモジュール定義の外側にあり、次のように読み取ります

    if defined?(Rack) and defined?(Rack::Request)
      Rack::Request.send :include, Geocoder::Request
    end

Rack::Request には事前定義メソッド .include がないため、ここで何が起こっているのかわかりません。

4

1 に答える 1

0

ブロックは、条件が満たされた場合にGeocoder::Requestモジュールがクラスに含まれることを意味するため、本質的には、定義したばかりのメソッドを含めるように機能をRack::Request拡張します。メソッドはruby​​ Moduleにあります。Rack::Requestlocationinclude

これはあなたが参照しているファイルです: Geocoder Request

于 2013-03-14T18:51:11.853 に答える