キーワードではなく、Ruby-Docに含まれている言語構造の種類は何ですか?

私がエントリーを見逃していない限り、私はRuby-Doc.またはgのドキュメントやRubyのキーワードリストには含まれていないし、拡張することもできない。私はobj.extendを見つけることができますが、クラス定義で使用される拡張ステートメントは見つかりません。

# add module Foo's methods as class methods of TestClass
class TestClass
  extend Foo
end

または

# add module Foo's methods as instance methods of TestClass
class TestClass
  include Foo
end

言語構造として、それが適切な用語であれば、包含と拡張とはどこに定義されていますか?

これら2つのステートメントがRuby言語でどのように実装されているかを理解することは良いことです。ありがとう。

1
追加された 編集された
ビュー: 1

2 答え

extend is an Object method, a convenience method for extend_object (more or less).

include is in Module, a wrapper around append_features.

2
追加された
知らなかったよ。
追加された 著者 John Bachir,
@Dennis信じる - 構文、クラス階層、そしてしばしば微妙な魔法は、行動の実装を追跡する...時々問題になる。それは面白いというオーバーヘッドのない冒険のようなものです。
追加された 著者 Dave Newton,
@Dennisそれはちょっと面白くて、病気で奇妙なやり方です。
追加された 著者 Dave Newton,
@Dennis Rubyでは、サブクラスはプライベートメソッドを呼び出すことができます。いくつかの参考文献: ref 1ref 2ref 3 をご覧ください。
追加された 著者 Dave Newton,
@Dennis問題なし:)
追加された 著者 Dave Newton,
私は自分の投稿でobj.extendとself.extendの関連付けをしていません:)。
追加された 著者 Dennis,
Klass.private_methodsがKlassのprivate_methodsの1つとしてincludeを表示しています - あなたや他の人が、KlassオブジェクトがModuleクラスのprivateメソッドにアクセスできる理由を説明できますか?それはモジュール<�オブジェクトのサブクラス化と関係がありますか?
追加された 著者 Dennis,
素晴らしい参考資料 - ありがとう。
追加された 著者 Dennis,

includeはModuleクラスのプライベートメソッドであり、extendsはObjectクラスのメソッドです

0
追加された