我编写了一个库,它扩展了几个基本的 Ruby 类,主要通过方法别名来观察包装器。但是,我在使用 Array 实例化速记(例如@a = [1, 2, 3]
)时遇到了障碍,我似乎找不到任何在通过速记方式创建 Array 对象时实际调用的方法。它不是#[]
当前范围内的继承方法,也不是继承自祖先链中的任何类或模块。我还重载或观察了每个方法,从类#new
到实例再到基于 Ruby C 代码的 Array 类对象上#initialize
的 singleton_method#[]
rb_define_singleton_method(rb_cArray, "[]", rb_ary_s_create, -1);
有谁知道我如何分配一个在速记 Array 实例实例化的方法链中的方法?