私はいくつかの基本 Ruby クラスを拡張するライブラリを作成し、主にメソッド エイリアシングを通じてラッパーを観察しました。しかし、Array インスタンス化の短縮形で障害にぶつかりました (例: @a = [1, 2, 3]
Array オブジェクトの作成時に省略形で実際に呼び出されるメソッドを見つけることができないようです)。これ#[]
は、現在のスコープで継承されたメソッドでも、祖先チェーン内のクラスまたはモジュールから継承されたメソッドでもありません。また、Ruby C コードに基づいて、Array クラス オブジェクトのクラスから#new
インスタンス#initialize
、singleton_methodまで、すべてのメソッドをオーバーロードまたは監視しました。#[]
rb_define_singleton_method(rb_cArray, "[]", rb_ary_s_create, -1);
省略形の Array インスタンスのインスタンス化のメソッドチェーン内にあるメソッドを割り当てる方法を知っている人はいますか?