11

ruby mixinのブログ投稿を見ていましたが、モジュールがクラスに含まれると、そのself.included()メソッドが呼び出されると書かれています。

私の質問は、この動作が公式に文書化されている場所はどこですか? ruby-docs.org の Web サイトやつるはしで見つけられないようです。

4

4 に答える 4

10

なぜかRuby Docには載っていませんが、included実際にはドキュメント化されています。ターミナルで実行ri Module.includedすると、次のようになります。

included( othermod )

レシーバーが別のモジュールまたはクラスに含まれるたびに呼び出されるコールバック。Module.append_features これは、モジュールが別のモジュールに含まれているときにコードが何らかのアクションを実行したい場合に優先して使用する必要があります。

module A
  def A.included(mod)
    puts "#{self} included in #{mod}"
  end
end
module Enumerable
  include A
end

このドキュメントは、 のRuby ソースにありobject.cます。残念ながら、Module.extended文書化されていません。

于 2012-04-29T06:19:47.610 に答える
1

これはプライベート メソッドであり、プライベート メソッドは現在表示されていないため、RubyDoc Web サイトにはないと思われます。

人々はこの問題を認識していますが、実装の詳細ではないにもかかわらず、プライベートなメソッドを処理する方法をまだ解決していません。

http://bugs.ruby-lang.org/issues/6381にバグレポートを作成しました

于 2012-04-29T22:26:03.177 に答える
0

どちらも、pickaxeの第2版(Ruby 1.8を対象)の556ページに記載されています。そこにあるドキュメントはri Module.included、Andrew Marshallが投稿した結果とまったく同じように見えるので、本のセクションが自動的に生成されたのではないかと思います。それがpickaxeの新しいエディションから削除された場合、それはruby-doc.orgに表示されないのと同じバグの結果である可能性があります

于 2012-04-29T22:39:16.160 に答える
0

パブリックメソッドのみが文書化されているようです

于 2012-04-29T22:31:26.530 に答える